【发布时间】:2012-07-03 10:14:19
【问题描述】:
你能告诉我是否应该在等待条件之前释放锁吗?
try {
lock.lock();
while (isNotEmpty()) {
condition.await();
}
} finally {
lock.unlock();
}
或者
try {
lock.lock();
while (isNotEmpty()) {
lock.unlock();
condition.await();
}
} finally {
lock.unlock();
}
【问题讨论】:
-
你读过the javadoc吗?
-
acquire(); try { use(); } finally { release(); }。如果您的获取 (lock) 失败,那么您将释放您从未持有的资源。在这种情况下,您可以解锁 [reentrant] 锁的封闭锁。
标签: java multithreading concurrency