你能告诉我在等待条件之前是否应该释放锁吗?条件 - 请等待之前解锁?
try {
lock.lock();
while (isNotEmpty()) {
condition.await();
}
} finally {
lock.unlock();
}
或者
try {
lock.lock();
while (isNotEmpty()) {
lock.unlock();
condition.await();
}
} finally {
lock.unlock();
}
你读过[javadoc的(http://docs.oracle.com/javase/7/docs /api/java/util/concurrent/locks/Condition.html)? – assylias
'acquire();尝试{use(); } finally {release(); }'。如果您获取('lock')失败,那么您将释放您从未拥有的资源。在这种情况下,您可以解锁[reentrant]锁的封闭锁。 –