生产者-消费者模型,基于LinkedList实现


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();
}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值