二、协同机制

1、背景

在特定情况下,我们需要多个线程之间相互合作。比如说达到以下效果:

  • 在某个线程结束后,再执行主线程;
  • 在多个线程都结束后,再执行主线程;
  • 在多个线程都在某个点等待,然后一起再执行;

为此,java初期设计等待通知机制以解决线程之间的协作。

多线程的协同是指多个线程对同一个对象(monitor)的协同;其实可以理解成线程都等待在monitor中。

2、理解线程之间的协作:wait、notify、notifyAll

3、相关面试题

(1)wait和sleep的区别 放弃锁跟占有锁的区别

(2)实现一个生产者和消费者模型

为什么wait条件要放在循环当中呢?Object的源码也是建议这么做的 因为在很多情况下,线程可能会被唤醒。而如果不是while循环,它就直接执行正确的代码了。

results matching ""

    No results matching ""