Esiste un mutex in Java?

Esiste un object Mutex in java o un modo per crearne uno? Ti sto chiedendo perché un object Semaphore inizializzato con 1 permesso non mi aiuta. Pensa a questo caso:

try { semaphore.acquire(); //do stuff semaphore.release(); } catch (Exception e) { semaphore.release(); } 

se si verifica un’eccezione alla prima acquisizione, il rilascio nel blocco catch aumenta i permessi e il semaforo non è più un semaforo binario.

Sarà il modo corretto essere?

 try { semaphore.acquire(); //do stuff } catch (Exception e) { //exception stuff } finally { semaphore.release(); } 

Il codice sopra riportato assicurerà che il semaforo sarà binario?