package queue;
/**
* 生产者-消费者模型
* 基于LinkedList实现
*/
import java.util.LinkedList;
import java.util.List;
public class LinkedQueue<T> {
private List<T> list = null;
private int maxCount = Integer.MAX_VALUE;
public LinkedQueue(){
list = new LinkedList<T>();
}
public LinkedQueue(int maxSize){
list = new LinkedList<T>();
maxCount = maxSize;
}
public synchronized void product(T obj){
while (list.size() >= maxCount) {
//System.out.println(Thread.currentThread().getName()+",队列已满,等待中....");
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
list.add(obj);
this.notifyAll();
//System.out.println(Thread.currentThread().getName()+",正在生产...队列当前个数:"+list.size());
}
public synchronized T consume(){
while(list.size()==0){
//System.out.println(Thread.currentThread().getName()+",队列为空,等待中...");
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
T obj = list.remove(0);
this.notifyAll();
//System.out.println(Thread.currentThread().getName()+",正在消费...队列当前个数:"+list.size());
return obj;
}
public T peek() {
T obj = null;
try {
obj = list.get(0);
} catch (IndexOutOfBoundsException e) {
return null;
}
return obj;
}
public int getMaxCount() {
return maxCount;
}
public int size() {
return list.size();
}
}
生产者-消费者模型,基于LinkedList实现
最新推荐文章于 2023-12-11 09:32:43 发布