在 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!");
}