Czy istnieje obiekt Mutex w Javie lub sposób na jego utworzenie? Pytam, ponieważ obiekt Semaphore zainicjowany z 1 zezwoleniem mi nie pomaga. Pomyśl o tym przypadku:
try {
semaphore.acquire();
//do stuff
semaphore.release();
} catch (Exception e) {
semaphore.release();
}
jeśli wyjątek wystąpi przy pierwszym pobraniu, zwolnienie w bloku catch zwiększy zezwolenia, a semafor nie jest już semaforem binarnym.
Czy będzie właściwy sposób?
try {
semaphore.acquire();
//do stuff
} catch (Exception e) {
//exception stuff
} finally {
semaphore.release();
}
Czy powyższy kod zapewni, że semafor będzie binarny?