Dai documenti Java java.util.concurrent.Semaphore non mi era chiaro cosa succederà se semaphore.acquire() blocca il thread e successivamente viene interrotto da un'interruzione di interrupt. Il valore del semaforo è diminuito e quindi è necessario rilasciare il semaforo?Hai bisogno di semaphore.relase() se semaphore.acquire() ottiene InterruptedException?
Attualmente sto usando il codice come questo:
try {
// use semaphore to limit number of parallel threads
semaphore.acquire();
doMyWork();
}
finally {
semaphore.release();
}
o non dovrebbe preferisco chiamare Release() quando si verifica un InterruptedException durante l'acquisizione()?
Grazie, sembra molto ragionevole. Cambierò il mio codice come mi hai suggerito. – kasimir
Il problema con questo è che semaphore.acquire() genera anche InterruptedException. – jblack