当前位置: 首页 > news >正文

做环卫设备都有哪些网站中国汽油价格最新价格

做环卫设备都有哪些网站,中国汽油价格最新价格,深圳的网站建设的公司,网站在线问答怎么做协作基础#xff08;wait/notify#xff09; Java的根父类是Object#xff0c;Java在Object类而非Thread类中#xff0c;定义了一些线程协作的基本方法#xff0c;使得每个对象都可以调用这些方法#xff0c;这些方法有两类#xff0c;一类是wait#xff0c;另一类是no…协作基础wait/notify Java的根父类是ObjectJava在Object类而非Thread类中定义了一些线程协作的基本方法使得每个对象都可以调用这些方法这些方法有两类一类是wait另一类是notify。 wait方法主要有两个 public final void wait() throws InterruptedException public final native void wait(long timeout) throws InterruptedException; 一个带时间参数单位是毫秒表示最多等待这么长时间参数为0表示无限期等待。一个不带时间参数表示无限期等待实际就是调用wait(0)。在等待期间都可以被中断如果被中断会抛出InterruptedException。 wait实际上做了什么呢每个对象都有一把锁和一个锁等待队列一个线程在进入synchronized代码块时会尝试获取锁获取不到的话会把当前线程加入等待队列中。其实除了用于锁的等待队列每个对象还有另一个等待队列表示条件队列该队列用于线程间的协作。调用wait就会把当前线程放到条件队列上并阻塞表示当前线程执行不下去了它需要等待一个条件这个条件它自己改变不了需要其他线程改变。当其他线程改变了条件后应该调用Object的notify方法 public final native void notify(); public final native void notifyAll(); notify做的事情就是从条件队列中选一个线程将其从队列中移除并唤醒notifyAll和notify的区别是它会移除条件队列中所有的线程并全部唤醒。 wait/notify方法只能在synchronized代码块内被调用如果调用wait/notify方法时当前线程没有持有对象锁会抛出异常java.lang.IllegalMonitorStateException。 wait的具体过程是 把当前线程放入条件等待队列释放对象锁阻塞等待线程状态变为WAITING或TIMED_WAITING等待时间到或被其他线程调用notify/notifyAll从条件队列中移除这时要重新竞争对象锁 如果能够获得锁线程状态变为RUNNABLE并从wait调用中返回否则该线程加入对象锁等待队列线程状态变为BLOCKED只有在获得锁后才会从wait调用中返回线程从wait调用中返回后不代表其等待的条件就一定成立了它需要重新检查其等待的条件一般的调用模式是 synchronized (obj) {while (条件不成立)obj.wait();... // 条件满足后的操作 }   生产者/消费者模式 下面来看一个生产者和消费者的例子 /*** author 沉默哥* */ public class MyProducerConsumerDemo {static class GoodsQueue {private int size;private QueueString que new ArrayDequeString();public GoodsQueue(int size) {// 维护一个有界队列传入队列的最大容量super();this.size size;}public synchronized void put(String e) throws InterruptedException {while (que.size() size) {System.out.println(队列已满生产者等待);wait();}que.add(e);System.out.println(生产者生产 e);notify();}public synchronized String take() throws InterruptedException {while (que.size() 0) {System.out.println(队列为空消费者等待);wait();}String e que.poll();System.out.println(消费者消费 e);notify();return e;}}static class Producer extends Thread {GoodsQueue que;Random rad new Random();public Producer(GoodsQueue que) {super();this.que que;}Overridepublic void run() {int i 0;try {while (true) {String e String.valueOf(i);que.put(e);i;Thread.sleep(rad.nextInt(1000));// 生产者休息准备下一次生产}} catch (InterruptedException e1) {}}}static class Consumer extends Thread {GoodsQueue que;Random rad new Random();public Consumer(GoodsQueue que) {super();this.que que;}Overridepublic void run() {try {while (true) {que.take();Thread.sleep(rad.nextInt(1000));// 消费者休息准备下一次消费}} catch (InterruptedException e) {}}}public static void main(String[] args) throws InterruptedException {GoodsQueue que new GoodsQueue(1);Producer pro new Producer(que);Consumer con new Consumer(que);con.start();Thread.sleep(500);pro.start();} }    转载于:https://www.cnblogs.com/JackPn/p/9426366.html
http://www.zqtcl.cn/news/680497/

相关文章:

  • 贵阳手机网站建设公司沈阳图书设计公司
  • 哪里做网站比较好在哪里注册域名
  • 做搜狗pc网站软件下载广告设计与制作学什么
  • 软件工程 旅游网站开发er图昆山网站建设网站建设
  • 网站下载的网页修改下面版权所有企业建设营销型网站的目的有
  • 官方重大项目建设库网站手机ps软件如何做ppt下载网站
  • 全国加盟网站大全海尔网站建设目标
  • wordpress 企业站模版自己做视频网站可以吗
  • 建设电子商务网站的方法有广东网站开发收费
  • php网站页面转wordpress网站广告代码
  • 在线网站建设教程网站版面布局结构
  • 网站建设提议网站建设怎么在图片上加字
  • 网站模板但没有后台如何做网站家政网站开发
  • 自己办网站审批流程网页设计师的发展路径
  • 什么叫网站地图百度竞价排名费用
  • 企业网站建设顾问wordpress如何用API采集
  • win7网站后台无法编辑vr网站建设
  • 做头发个人网站制作素材dw中做网站的步骤
  • 学校网站做几级等保网页制作与维护
  • 十堰外贸网站建设松滋做网站
  • 网站导航条青浦徐泾网站建设
  • 厦门网站建设一般多少钱店铺域名是什么意思
  • 网站关键词搜索排名怎么做雅奇小蘑菇做网站好不好用
  • 手机网站案例建设网站地图素材
  • 企业网站制作比较好的如何设计一个网页首页代码
  • 维护网站成本网站建设进度图
  • asp.net做织梦网站设计手机网站建设
  • 江苏省住房和城乡建设局网站首页北京大型网站制作公司
  • 网站改版工作方案网站设计技能培训
  • 佳木斯市网站建设淄博网站开发招聘