Java java.util.concurrent.Semaphoreのドキュメントから、semaphore.acquire()がスレッドをブロックし、後でInterruptedExceptionによって中断された場合に何が起こるかは、私にはよくわかりませんでした。セマフォ値が減少したので、セマフォを解放する必要がありますか?
現在、私は次のようなコードを使用しています。
try {
// use semaphore to limit number of parallel threads
semaphore.acquire();
doMyWork();
}
finally {
semaphore.release();
}
または、acquire()中にInterruptedExceptionが発生したときにrelease()を呼び出さないでください。