package com.gzrj.lesson4.product;
public class TestProducerConsumer {
public static void main(String[] args) {
Basket basket = new Basket();
Producer producer = new Producer(basket);
Consumer consumer = new Consumer(basket);
Thread thread = new Thread(producer);
Thread thread2 = new Thread(consumer);
thread.start();
thread2.start();
}
}
class Bread{
private int id;
public Bread(int id){
this.id = id;
}
@Override
public String toString() {
return "面包"+id;
}
}
class Basket{
private Bread[] breads = new Bread[6];
private int index = 0;
public synchronized void push(Bread bread){
if(index == breads.length){
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
breads[index] = bread;
index++;
System.out.println("生产了"+bread);
this.notify();
}
public synchronized void pop(){
try {
Thread.sleep(1);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
if(index == 0){
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
index--;
Bread bread = breads[index];
System.out.println("消费了"+bread);
this.notify();
}
}
class Producer implements Runnable{
private Basket basket;
public Producer(Basket basket){
this.basket = basket;
}
public void run() {
for(int i=0;i<20;i++){
Bread bread = new Bread(i);
basket.push(bread);
}
}
}
class Consumer implements Runnable{
private Basket basket;
public Consumer(Basket basket){
this.basket = basket;
}
public void run() {
for(int i=0;i<20;i++){
basket.pop();
}
}
}
本文来源:https://www.2haoxitong.net/k/doc/eb963d18650e52ea551898d8.html
文档为doc格式