蓝色大气网站模板,沈阳百度网站排名,关键词收录查询工具,谷歌浏览器打不开网页JUC
wait
obj.wait() 让进入 object 监视器的线程到 waitSet 等待wait#xff08;#xff09;方法会释放对象的锁#xff0c;进入 WaitSet 等待区#xff0c;从而让其他线程就机会获取对象的锁。无限制等待#xff0c;直到 notify 为止wait(long n#xff09;有时限的等…JUC
wait
obj.wait() 让进入 object 监视器的线程到 waitSet 等待wait方法会释放对象的锁进入 WaitSet 等待区从而让其他线程就机会获取对象的锁。无限制等待直到 notify 为止wait(long n有时限的等待,到 n 毫秒后结束等待或是被 notifysleep 是 Thread 方法而 wait 是 Object 的方法 2) sleep 不需要强制和 synchronized 配合使用但 wait 需要 和 synchronized 一起用 3) sleep 在睡眠的同时不会释放对象锁的但 wait 在等待的时候会释放对象锁 4) 它们 状态 TIMED_WAITING
notify
obj.notify() 在 object 上正在 waitSet 等待的线程中挑一个唤醒 obj.notifyAll() 让 object 上正在 waitSet 等待的线程全部唤醒
join
设计模式 - 保护暂停模式
即 Guarded Suspension用在一个线程等待另一个线程的执行结果 要点 有一个结果需要从一个线程传递到另一个线程让他们关联同一个 GuardedObject 如果有结果不断从一个线程到另一个线程那么可以使用消息队列见生产者/消费者JDK 中join 的实现、Future 的实现采用的就是此模式 因为要等待另一方的结果因此归类到同步模式
设计模式 - 生产者消费者模式
要点 与前面的保护性暂停中的 GuardObject 不同不需要产生结果和消费结果的线程一一对应 消费队列可以用来平衡生产和消费的线程资源 生产者仅负责产生结果数据不关心数据该如何处理而消费者专心处理结果数据 消息队列是有容量限制的满时不会再加入数据空时不会再消耗数据 JDK 中各种阻塞队列采用的就是这种模式