本文主要讲解wait/notify的正确使用姿势、park/unpark、join()的原理、模式之生产者-消费者模式(异步)、保护性暂停模式(同步)、线程状态转换的流程、死锁和活锁以及如何检查死锁等。

一、 wait notify

并发编程(共享模型之管程wait notify)

 并发编程(共享模型之管程wait notify)

API 介绍

  • obj.wait() 让进入 object 监视器的线程到 waitSet 等待
  • obj.notify() 在 object 上正在 waitSet 等待的线程中挑一个唤醒 obj.notifyAll() 让 object 上正在 waitSet 等待的线程全部唤醒
  • obj.notifyAll() 让 object 上正在 waitSet 等待的线程全部唤醒

它们都是线程之间进行协作的手段,都属于 Object 对象的方法。必须获得此对象的锁,才能调用这几个方法

 

并发编程(共享模型之管程wait notify)

运行结果

并发编程(共享模型之管程wait notify)

 wait() 方法会释放对象的锁,进入 WaitSet 等待区,从而让其他线程就机会获取对象的锁。无限制等待,直到 notify 为止

wait(long n) 有时限的等待, 到 n 毫秒后结束等待,或是被 notify

 4.8 wait notify的正确姿势 

并发编程(共享模型之管程wait notify)

 

 

 

 

 

相关文章:

  • 2021-08-22
  • 2021-04-02
  • 2021-12-09
  • 2022-12-23
  • 2021-06-25
  • 2021-12-02
  • 2022-02-06
  • 2021-06-19
猜你喜欢
  • 2021-12-21
  • 2021-07-06
  • 2021-11-20
  • 2021-08-05
  • 2021-11-26
  • 2022-12-23
  • 2021-10-23
相关资源
相似解决方案