为了账号安全,请及时绑定邮箱和手机立即绑定

对于notify()/wait()的一点疑惑

对于notify()/wait()的一点疑惑

Qyouu 2019-03-01 11:02:31
class MyObject{ private Queue<String> queue = new ConcurrentLinkedQueue<String>(); public synchronized void set(String s){ while(queue.size() >= 10){ try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } queue.add(s); notify(); } } class Producer implements Runnable{ private MyObject myObj; public Producer(MyObject myObj) { this.myObj= myObj; } @Override public void run() { // 每条线程执行30次set for (int i = 0; i < 30; i++) { this.myObj.set("obj:" + i); } } } public static void main(String[] args){ Producer producer = new Producer(new MyObject()); // 生成30条线程 for (int i = 0; i < 10; i++) { Thread thread = new Thread(producer); thread.start(); } // 运行结果是只set了30次 } 我的疑惑是notify()发布通知,为什么不会让其他线程的wait()方法继续执行下去呢?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 412 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信