线程通信
简介:线程间通信是指多个线程间等待与唤醒的一个交互;
1.JDK5之前传统线程的通信方式,使用Object的wait与notify;
2.JDK5后更高效的是使用Condition;
生产者/消费者问题
注意:1.在wait方法说明中,也推荐使用while,因为在某些特定的情况下,线程有可能被假唤醒,使用while会循环检测更稳妥;
2.wait和notify方法必须工作于synchronized内部,且这两个方法只能由锁对象来调用;
使用Lock与Condition
Condition的强大之处在于它可以为多个线程间建立不同的Condition
好处:放完鸡蛋必定是提醒取鸡蛋cdGet,取完鸡蛋必定是提醒放鸡蛋cdPut
(如果只用一个cd,放完鸡蛋,可能又唤醒放鸡蛋,再次阻塞)