package sort;
import java.util.*;
public class ProducterAndConsumer {
private final int MAX_LEN = 10;
private volatile Queue<Integer> queue = new LinkedList<Integer>();
class Producer extends Thread {
@Override
public void run() {
// TODO Auto-generated method stub
while (true) {
synchronized (queue) {
System.out.println("生产者拿到锁");
while (queue.size() >= 1) {
queue.notify();
System.out.println("队列已经满了");
try {
queue.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
queue.add(1);
System.out.println("生产者当前的长度为" + queue.size());
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
class Consumer extends Thread {
@Override
public void run() {
// TODO Auto-generated method stub
while (true) {
synchronized (queue) {
System.out.println("消费者拿到锁");
while (queue.size() == 0) {
queue.notify();
System.out.println("当前队列为空");
try {
queue.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
queue.poll();
System.out.println("消费者队列长度为" + queue.size());
try {
Thread.sleep(1000);
} catch (Exception e) {
// TODO: handle exception
}
}
}
}
}
public static void main(String[] args) {
ProducterAndConsumer psc = new ProducterAndConsumer();
Producer p = psc.new Producer();
Consumer c = psc.new Consumer();
p.start();
c.start();
}
}