1

IllegalMonitorStateExceptionブロック内からロックを解除すると、私のプログラムは をスローしfinallyます。Javadoc によると、この例外は「現在のスレッドがこのロックを保持していない場合」にスローされます。ただし、プログラムが finally ブロックに到達した場合は、以前にロックを取得している必要があります。ロックは以前に他の場所でロック解除されていません。ロックが「失われる」ことはありますか?

コード例:

final ReadWriteLock rwLock = new ReentrantReadWriteLock();

public void doSomething() {
    Lock lock = rwLock.writeLock();
    try {
        doStuff();
    } finally {
        lock.unlock();
    }
}
4

1 に答える 1