/**
* 描述: 生产者消费者 1.0 wait notify 版
* wait notify
*
* Thread1 对 number 加 1
* Thread2 对 number 减 1
* @author 小纸人
* @create 2019-07-31 20:30
*/
class ShareData1 {
private int number = 0;
public synchronized void increment() throws Exception {
//1. 判断
while (number != 0) {
//等待不生产
wait();
}
//2. 干活
number++;
System.out.println(Thread.currentThread().getName() + "\t" + number );
//3. 通知唤醒
notifyAll();
}
public synchronized void decrement() throws Exception {
//1. 判断
while (number == 0) {
//等待不生产
wait();
}
//2. 干活
number--;
System.out.println(Thread.currentThread().getName() + "\t" + number );
//3. 通知唤醒
notifyAll();
}
}
public class Version1_0 {
public static void main(String[] args){
ShareData1 shareData1 = new ShareData1();
new Thread(() -> {
for (int i = 0; i < 5; i++) {
try {
shareData1.increment();
} catch (Exception e) {
e.printStackTrace();
}
}
},"AAA").start();
new Thread(() -> {
for (int i = 0; i < 5; i++) {
try {
shareData1.decrement();
} catch (Exception e) {
e.printStackTrace();
}
}
},"BBB").start();
}
}