8.2 线程通信

线程通信

简介:线程间通信是指多个线程间等待与唤醒的一个交互;

           1.JDK5之前传统线程的通信方式,使用Object的wait与notify;

           2.JDK5后更高效的是使用Condition;


生产者/消费者问题

注意:1.在wait方法说明中,也推荐使用while,因为在某些特定的情况下,线程有可能被假唤醒,使用while会循环检测更稳妥;

           2.wait和notify方法必须工作于synchronized内部,且这两个方法只能由锁对象来调用;

8.2 线程通信_第1张图片
生产消费案例

使用Lock与Condition

8.2 线程通信_第2张图片
condition简单使用

Condition的强大之处在于它可以为多个线程间建立不同的Condition

好处:放完鸡蛋必定是提醒取鸡蛋cdGet,取完鸡蛋必定是提醒放鸡蛋cdPut

        (如果只用一个cd,放完鸡蛋,可能又唤醒放鸡蛋,再次阻塞)

8.2 线程通信_第3张图片
多个condition使用

你可能感兴趣的:(8.2 线程通信)