public static void main(String[] args) throws InterruptedException {
// Producer producer = new Producer();
// Concumer concumer = new Concumer();
//
// producer.producer();
// concumer.foo();
Lock lock =new ReentrantLock();
Condition condition = lock.newCondition();
AtomicInteger count = new AtomicInteger(10);
ConcurrentHashMap<Object,Object> map = new ConcurrentHashMap<>();
for (int i = 0; i < 10; i++) {
new Thread(()->{
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
lock.lock();
try {
int value = new Random().nextInt();
map.put(value,value);
condition.signal();
}finally {
lock.unlock();
}
}).start();
}
lock.lock();
try {
while (count.get()>0){
condition.await();
}
}finally {
lock.unlock();
}
System.out.println(map.toString());
}
为什么这段代码的锁没有被释放一直卡死在那里