Bạn có thể cho tôi biết nếu tôi nên nhả khóa trước khi chờ trong tình trạng không?Điều kiện - nên mở khóa trước khi chờ?
try {
lock.lock();
while (isNotEmpty()) {
condition.await();
}
} finally {
lock.unlock();
}
Hoặc
try {
lock.lock();
while (isNotEmpty()) {
lock.unlock();
condition.await();
}
} finally {
lock.unlock();
}
Bạn đã đọc [javadoc] (http://docs.oracle.com/javase/7/docs /api/java/util/concurrent/locks/Condition.html)? – assylias
'mua(); thử {use(); } cuối cùng {release(); } '. Nếu bạn có được ('khóa') không thành công thì bạn sẽ giải phóng tài nguyên mà bạn chưa từng nắm giữ. Trong trường hợp này, bạn có thể mở khóa khóa của khóa [reentrant]. –