L'environnement d'exploitation de ce tutoriel : système Windows 7, version Java 10, ordinateur DELL G3.
1. Méthode d'obtention
lock(), tryLock(), tryLock(long time, TimeUnit unit) et lockInterruptably() sont tous utilisés pour acquérir des verrous.
( 1) La méthode lock() est la méthode la plus couramment utilisée pour obtenir des verrous . Si le verrou a été acquis par un autre thread, attendez.
( 2) La méthode tryLock() a une valeur de retour, ce qui signifie qu'elle est utilisée pour essayer d'acquérir le verrou . Si l'acquisition réussit, elle renvoie true. Si l'acquisition échoue (c'est-à-dire que le verrou a été acquis par un autre). thread), il renvoie false, ce qui signifie ceci La méthode retourne immédiatement quoi qu'il arrive. Vous n'attendrez pas là-bas si vous ne parvenez pas à obtenir la serrure.
( 3) La méthode tryLock(long time, TimeUnit unit) est similaire à la méthode tryLock(), mais la différence est que cette méthode attendra un certain temps lorsque le verrou ne peut pas être obtenu. dans le délai imparti, il renvoie false. Renvoie vrai si le verrou a été obtenu initialement ou pendant la période d'attente.
( 4) La méthode lockInterruptably() est spéciale. Lors de l'acquisition d'un verrou via cette méthode, si le thread attend d'acquérir le verrou, le thread peut répondre à l'interruption, c'est-à-dire interrompre l'état d'attente du thread. C'est-à-dire que lorsque deux threads veulent acquérir un verrou via lock.lockInterruptably() en même temps, si le thread A acquiert le verrou à ce moment-là et que le thread B attend seulement, alors la méthode threadB.interrupt() est appelé sur le thread B. Peut interrompre le processus d'attente du thread B.
2.Exemples
Prenons trylock comme exemple.
Verrouillage = ... ; si(lock.tryLock()) { essayer{ //Tâches de traitement }catch(Exception ex){ }enfin{ lock.unlock(); //Libérez le verrou } }autre { //Si le verrou ne peut pas être acquis, faites autre chose directement}
Il existe de nombreuses méthodes stockées dans l'interface Java pour faciliter les appels directs lors de l'utilisation de threads. Tout le monde connaît l’interface de verrouillage et nous avons déjà eu une première compréhension du concept. La méthode d’acquisition du verrou ne doit donc pas encore être très claire.
Voici les quatre méthodes d'acquisition de verrous en Java. Après avoir lu l'article, vous pouvez renforcer votre mémoire et votre compréhension dans ce domaine. Si vous êtes intéressé par d'autres méthodes d'acquisition de verrous, vous pouvez également trouver des codes pertinents pour vous entraîner après les cours.