Est-il un Mutex en Java?

Est-il un objet Mutex en java ou un moyen d'en créer un?
Je demande car un objet Sémaphore initialisé avec 1 permis de ne pas m'aider.
Pense de cette affaire:

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

si une exception se produit lors de la première acquisition, la libération dans le bloc catch va augmenter les permis, et le sémaphore n'est plus un sémaphore binaire.

Sera la bonne façon?

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

Sera le code ci-dessus vous assurer que le sémaphore sera binaire?

  • Regardez la javadoc de java.util.de façon concomitante.les verrous.AbstractQueuedSynchronizer. Il a un exemple de la façon d'écrire une classe Mutex. -dbednar
  • Avez-vous trouvé ce comportement de manière empirique? Est la mise en œuvre, telles que l'exécution de release() sur un 1-permis de Sémaphore ajoute un supplément de permis, même si ça tient actuellement un autre, vraiment ?
InformationsquelleAutor Noam Nevo | 2011-03-13