JUC 第4章线程间通信
第4章 线程间通信
1. 线程间通信
(1)生产者+消费者
(2)通知等待唤醒机制
1.1 多线程编程模板下
(1)判断
(2)干活
(3)通知
2. synchronized实现
2.1 程序代码


2.2 换成4个线程
换成4个线程会导致错误,虚假唤醒
原因:在java多线程判断时,不能用if,程序出事出在了判断上面,
突然有一天加的线程进到if了,突然中断了交出控制权,
没有进行验证,而是直接走下去了,加了两次,甚至多次
2.3 虚假唤醒解决办法
解决虚假唤醒:查看API,java.lang.Object
中断和虚假唤醒是可能产生的,所以要用loop循环,if只判断一次,while是只要唤醒就要拉回来再判断一次。if换成while
3. java8新版实现
3.1 对标实现

- 3.2 Condition
Condition:查看API,java.util.concurrent
API例子:
- 3.3 程序代码