IllegalMonitorStateException
从块内解锁时,我的程序会抛出一个错误finally
。Javadoc 说“如果当前线程没有持有这个锁”就会抛出这个异常。但是,如果程序曾经到达 finally 块,它之前一定已经获得了锁。锁之前没有在其他地方解锁。锁会“丢失”吗?
代码示例:
final ReadWriteLock rwLock = new ReentrantReadWriteLock();
public void doSomething() {
Lock lock = rwLock.writeLock();
try {
doStuff();
} finally {
lock.unlock();
}
}