当前位置: 首页 > 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.pierceye.com/news/680497/

相关文章:

  • 如何让自己的网站被百度收录wordpress 悬浮网易云
  • 天津展示型网站建设外包腾讯云wordpress镜像
  • python做网站点登入没反映wordpress母公司
  • 中国建设培训网站查询系统地产项目网站建设ppt
  • 温州高端网站建设网站开发实验心得
  • 设计参考网站有哪些陕西省西安市事业单位招聘网
  • 月编程做网站wordpress需要调用缩略图
  • 做一份网站动态图多少钱网站托管服务公司
  • 宣传式网站营销型网站套餐
  • 建设网站如何优化关键词江门排名优化公司
  • 做教学的视频网站wordpress小工具推荐
  • 唯品会专门做特卖的网站保险行业网站模板
  • 电商类公司网站应该怎么搭建广州做网站公司哪家比较好
  • 企业网站实名认证时间怎样开通微信公众号
  • 怎么才能在百度上搜到自己的网站如何优化网站
  • 酒泉网站建设价格福清市建设局网站
  • 网站建设有几种厦门网站的建设
  • 沈阳网站外包通过法人姓名查企业
  • 建设网站的多少钱红色风格网站
  • 公司网站运营维护单位温州h5建站
  • 做网站想注册商标是哪一类网站上线具体流程
  • 如何让网站自适应屏幕北京做网站哪个公司好
  • 个人网站建设简历网站路径怎么做
  • 学做面包到什么网站企业网站都没的百度快照咋办
  • 手机网站建设视频教程安徽建站之星
  • 做网站专题页的字大小是多少购物商城排名
  • 门窗东莞网站建设技术支持海口快速建站模板
  • 公司网站制作第三方网站浮窗制作
  • 网站需要服务器吗?万州网站建设
  • 网站关键词可以修改吗做响应式网站字体需要响应么