Aus der Java java.util.concurrent.Semaphore docs war es mir nicht ganz klar, was passiert, wenn semaphore.acquire() den Thread blockiert und später durch eine InterruptedException unterbrochen wird. Wurde der Semaphorwert verringert und muss der Semaphor freigegeben werden?Benötigen Sie semaphore.relase() wenn semaphore.acquire() InterruptedException bekommt?
Derzeit bin ich mit Code wie folgt:
try {
// use semaphore to limit number of parallel threads
semaphore.acquire();
doMyWork();
}
finally {
semaphore.release();
}
Oder soll ich rufe eher nicht Release(), wenn ein InterruptedException während acquire auftritt()?
Danke, das klingt sehr vernünftig. Ich werde meinen Code ändern, wie Sie es vorgeschlagen haben. – kasimir
Das Problem dabei ist, dass semaphore.acquire() auch InterruptedException auslöst. – jblack