消费者生产者模式
public class Basket {
private volatile Object data;
public synchronized void product(Object data) {
while (this.data != null)
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
this.data = data;
System.out.println(Thread.currentThread().getName() + "生产一个日期" + this.data);
this.notifyAll();
}
public synchronized void consume() {
while (this.data == null) {
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
} System.out.println(Thread.currentThread().getName() + "消费一个日期" +this.data);
this.data=null;
this.notifyAll();
}
public class Consume extends Thread {
private Basket basket;
public Consume(Basket basket) {
this.basket = basket;
}
@Override
public void run() {
for (int i = 0; i < 20; i++) {
basket.consume();
}
}
}
public class Producer extends Thread {
private Basket basket;
public Producer(Basket basket){
this.basket=basket;
}
@Override
public void run() {
for (int i=0;i<20;i++){
Object data=new Date();
basket.product(data);
}
}
}
public class Test1 {
public static void main(String[] args) {
Basket basket=new Basket();
Thread t1=new Consume(basket);
t1.start();
Thread t2=new Producer(basket);
t2.start();
}
}