セマフォ アクションを try-catch ブロックでラップする適切な方法は何ですか? 要求されたパーミットのすべてではなく一部を取得した後で取得アクションが中断された場合はどうなりますか? もう一度リリースする数をどうやって知るのですか? リリースは「最終的に」ブロックに入る必要がありますが、アクションが中断された場合に取得できなかった許可をリリースする可能性はありませんか?
try {
lock.acquire(permits);
//Do some things that require synchronization
//Make sure to release all of the permits again!
lock.release(permits);
} catch (InterruptedException e) {
log.error("Interrupted!");
}