Desde Java java.util.concurrent.Semaphore docs, no estaba del todo claro para mí qué sucede si semáforo.acquire() bloquea el hilo y luego es interrumpido por una InterruptedException. ¿Se ha disminuido el valor del semáforo y, por lo tanto, existe la necesidad de liberar el semáforo?Necesita semaphore.relase() si semaphore.acquire() obtiene InterruptedException?
Actualmente estoy usando código como este:
try {
// use semaphore to limit number of parallel threads
semaphore.acquire();
doMyWork();
}
finally {
semaphore.release();
}
o debería prefieren no llamar la liberación() cuando se produce un InterruptedException durante la adquisición()?
Gracias, eso suena muy razonable. Cambiaré mi código como sugirió. – kasimir
El problema con esto es que semáforo.acquire() también arroja InterruptedException. – jblack