Java5实现阻塞队列

来源:互联网 发布:web报表软件 编辑:程序博客网 时间:2024/05/20 21:23
import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;class BoundedBuffer{final Locklock= new ReentrantLock();final ConditionnotFull= lock.newCondition();final ConditionnotEmpty= lock.newCondition();final Object[]items= new Object[100];intputptr, takeptr, count;public void put(Object x) throws InterruptedException{lock.lock();try{while (count == items.length){notFull.await();}items[putptr] = x;if(++putptr == items.length){putptr = 0;}++count;notEmpty.signal();}finally{lock.unlock();}}public Object take() throws InterruptedException{lock.lock();try{while (count == 0){notEmpty.await();}Object x = items[takeptr];if(++takeptr == items.length){takeptr = 0;}--count;notFull.signal();return x;}finally{lock.unlock();}}}

原创粉丝点击