二、协同机制
1、背景
在特定情况下,我们需要多个线程之间相互合作。比如说达到以下效果:
- 在某个线程结束后,再执行主线程;
- 在多个线程都结束后,再执行主线程;
- 在多个线程都在某个点等待,然后一起再执行;
为此,java
初期设计等待通知机制以解决线程之间的协作。
多线程的协同是指多个线程对同一个对象(monitor)的协同;其实可以理解成线程都等待在monitor中。
2、理解线程之间的协作:wait、notify、notifyAll
3、相关面试题
(1)wait和sleep的区别 放弃锁跟占有锁的区别
(2)实现一个生产者和消费者模型
为什么wait条件要放在循环当中呢?Object的源码也是建议这么做的 因为在很多情况下,线程可能会被唤醒。而如果不是while循环,它就直接执行正确的代码了。