Lock里的 new Condition()
会产生一个新的Condition(等待队列)对象
- 利用
Condition
里面的await()
和singnal
等待和唤醒自己队列的线程,不会唤醒不该唤醒的线程
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
class goods{
private String name;
private int count = 0;
private int maxCount;
public goods(int maxCount){
this.maxCount = maxCount;
}
private Lock lock = new ReentrantLock();
private Condition producer = lock.newCondition();
private Condition consumer = lock.newCondition();
public void Produce(String name){
try {
lock.lock();
while (this.count == maxCount){
System.out.println("商品数量已经达最大,等待消费者消费");
producer.await();
}
this.name = nam