【发布时间】:2012-02-25 09:15:53
【问题描述】:
为了确保 Lock 被解锁,建议从 finally 子句中调用 unlock() 方法:
lock.lock();
try{
// critical section which may throw exceptions
} finally {
lock.unlock();
}
这是为了避免可能的死锁,以防临界区的代码抛出异常。
为什么不建议在等效场景中对二进制信号量采用相同的做法?
mutex.acquire();
try{
// critical section which may throw exceptions
} finally {
mutex.release();
}
【问题讨论】:
标签: java multithreading concurrency deadlock semaphore