IllegalMonitorStateException
ブロック内からロックを解除すると、私のプログラムは をスローしfinally
ます。Javadoc によると、この例外は「現在のスレッドがこのロックを保持していない場合」にスローされます。ただし、プログラムが finally ブロックに到達した場合は、以前にロックを取得している必要があります。ロックは以前に他の場所でロック解除されていません。ロックが「失われる」ことはありますか?
コード例:
final ReadWriteLock rwLock = new ReentrantReadWriteLock();
public void doSomething() {
Lock lock = rwLock.writeLock();
try {
doStuff();
} finally {
lock.unlock();
}
}