忘记图片来源了。。
//奶箱类
public class MilkBox {
public static int bottles = 0;
}
//生产者
public class Producer implements Runnable {
private String lock = "";
public Producer(String lock){
this.lock = lock;
}
@Override
public void run() {
synchronized (lock){
while(true){
if(MilkBox.bottles > 0){
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
MilkBox.bottles ++;
System.out.println("生产者生产后,奶瓶的数量为:" + MilkBox.bottles);
lock.notify();
}
}
}
}
//消费者
public class Consumer implements Runnable {
private String lock = "";
public Consumer(String lock) {
this.lock = lock;
}
@Override
public void run() {
synchronized (lock){
while(true){
if(MilkBox.bottles == 0){
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
MilkBox.bottles --;
System.out.println("消费者消费之后,奶瓶数量为:" + MilkBox.bottles);
lock.notify();
}
}
}
}
//测试类
public class Test {
public static void main(String[] args) {
String lock = "";
new Thread(new Consumer(lock)).start();
new Thread(new Producer(lock)).start();
}
}
共有三种实现方式:生产者消费者的三种实现方式