当从finally
块内部解锁时,我的程序会抛出IllegalMonitorStateException
。 Javadoc说,如果当前线程没有保存这个锁,就抛出这个异常。但是,如果程序到达finally块,它必须先获得一个锁。锁在其他地方没有解锁。锁可能“迷路”?ReentrantReadWriteLock丢失 - 引发IllegalMonitorStateException
代码示例:
final ReadWriteLock rwLock = new ReentrantReadWriteLock();
public void doSomething() {
Lock lock = rwLock.writeLock();
try {
doStuff();
} finally {
lock.unlock();
}
}