package queue;

import java.util.PriorityQueue;

// 非阻塞队列的生产者和消费者
public class QueryTwo {
public static void main(String[] args) {
QueryTwo queryTwo = new QueryTwo();
prodoct prodocts = queryTwo.new prodoct();
customer customers = queryTwo.new customer();
prodocts.start();
customers.start();


}
private int querySize = 10;
private PriorityQueue<Integer> priorityQueue = new PriorityQueue<Integer>(querySize);

// 如果队列填满的话就需要等待,唤醒
class prodoct extends Thread{
@Override
public void run() {
product();
}
private void product(){
while (true){
synchronized (priorityQueue){
while (querySize==priorityQueue.size()){
try {
System.out.println("队列已满请等待。。。。。。");
priorityQueue.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
// 添加进去
priorityQueue.offer(1);
System.out.println("相队列插入了一个数据,剩余空间" +(querySize-priorityQueue.size()) );
}
}
}
}
// 消费者

class customer extends Thread{
@Override
public void run() {
custemor();
}
private void custemor(){
while (true){
synchronized (priorityQueue){
while (priorityQueue.size()==0){
System.out.println("队列为null,请等待");
try {
priorityQueue.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
priorityQueue.poll();
priorityQueue.notify();
System.out.println("队列剩余"+(priorityQueue.size()));

}
}

}

}






}
posted on 2021-07-22 15:08  沐雨清晨  阅读(62)  评论(0编辑  收藏  举报