package hit.zsy.cn;
import java.util.PriorityQueue;
public class TestConPro {
private int queueSize = 10;
private PriorityQueue<Integer> queue = new PriorityQueue<Integer>(queueSize);
public static void main(String[] args) {
// TODO Auto-generated method stub
TestConPro t = new TestConPro();
Producer pro = t.new Producer();
Consumer con = t.new Consumer();
pro.start();
con.start();
}
class Consumer extends Thread{
public void run(){
consume();
}
private void consume(){
while(true){
synchronized (queue) {
while(queue.size() == 0){
System.out.println("队列空,等待数据...");
try {
queue.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
queue.notify();
}
}
queue.poll();
queue.notify();
System.out.println("从队列取走一个元素,队列剩余"+queue.size()+"个元素");
}
}
}
}
class Producer extends Thread{
public void run(){
produce();
}
private void produce(){
while(true){
synchronized (queue) {
while(queue.size() == queueSize){
System.out.println("队列满,等待消费...");
try {
queue.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
queue.notify();
}
}
queue.offer(1);
queue.notify();
System.out.println("向队列插入一个元素,队列剩余空间为"+(queueSize-queue.size())+"个元素");
}
}
}
}
}
运行结果中大部分为:
但是也有一部分是这样的:
本博客中未标明转载的文章归作者
海子和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。