Existe um Mutex em Java?

Existe um objeto Mutex em java ou uma maneira de criar um? Estou perguntando porque um objeto Semáforo inicializado com 1 permissão não me ajuda. Pense neste caso:

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

se ocorrer uma exceção na primeira aquisição, a liberação no bloco catch aumentará as permissões e o semáforo não será mais um semáforo binári

A maneira correta será?

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

O código acima garantirá que o semáforo seja binário?

questionAnswers(8)

yourAnswerToTheQuestion