等待/通知的经典范式

该范式分为两部分,分别针对等待方(消费者)和通知方(生产者)。

等待方遵循如下原则。

  • 获取对象的锁。
  • 如果条件不满足,那么调用对象的wait()方法,被通知后仍要检查条件。
  • 条件满足则执行对应的逻辑。

对应的伪代码如下。

 
  1. synchronized(对象) {

  2. while(条件不满足) {

  3. 对象.wait();

  4. }

  5. 对应的处理逻辑

  6. }

通知方遵循如下原则。

  • 获得对象的锁。
  • 改变条件。
  • 通知所有等待在对象上的线程。

对应的伪代码如下。

 
  1. synchronized(对象) {

  2. 改变条件

  3. 对象.notifyAll();

  4. }

猜你喜欢

转载自blog.csdn.net/qq_33366098/article/details/86485401