实现目标:
1.ReentrantLock
建立一个容器,10个消费者,2个生产者,消费者消费数据,生产者生产数据。
容器中数据达到10,生产者等待,消费者进行消费
容器中数据为0,消费者等待,生产者进行生产
public class TestContainer<W> {
List<W> list=Collections.synchronizedList(new ArrayList());
final static int MAX=10;
static int count=0;
Lock lock = new ReentrantLock();
Condition producer = lock.newCondition();
Condition consumer = lock.newCondition();
//producer
public void put(W w){
try {
lock.lock();
while (list.size()==MAX){
producer.await();
}
list.add(w);
count++;
consumer.signalAll();
} catch (Exception e) {
e.printStackTrace();
}finally {
lock.unlock();
}
}
//consumer
public W get(){
W w=null;
try {
lock.lock();