Lock est un outil pour contrôler plusieurs threads pour accéder aux ressources partagées. Généralement, le verrou propose des visites exclusives aux ressources partagées. Il n'y a qu'un seul fil pour obtenir un verrou à la fois. Cependant, certaines verrous peuvent permettre des interviews avec des ressources partagées, telles que ReadWriteLock (maintenir une paire de verrous connexes, un pour le fonctionnement de lecture et l'autre pour les opérations d'écriture).
1. Le verrouillage fournit des opérations d'acquisition de verrouillage inconditionnelles, rond, de synchronisation, interrupables, toutes les méthodes de verrouillage et de déverrouillage sont explicites.
Lock d'interface publique {Void Lock (); Mode Boolean Trylock (Long Timeout, TimeUnit Unit) InterruptedException;
2. Reentrantlock réalise l'interface de verrouillage.
3. La forme normative de l'interface de verrouillage nécessite le verrouillage de libération.unlock () pour libérer Lock.Unlock () dans le bloc final. Si le code Lock-Guard est anormal à l'extérieur Essayez le bloc, il ne sera jamais publié.
Utilisation de verrouillage de simulation suivante: En supposant qu'il existe deux threads (thread A, thread B) pour appeler la méthode d'impression (nom de chaîne), le thread A est responsable de l'impression de la chaîne «Zhangsan» et le thread B est responsable de l'impression de «lisi ' chaîne.
1. Lors de l'ajout de la méthode de peluche (nom de chaîne), le thread A n'a pas été exécuté et le thread B a commencé à s'exécuter, le nom imprimé aura les problèmes suivants.
2.
package com.ljq.test.thread; String [] args) {new LockTest (). ) {Try {thread.sleep (10);} catch (interruptedException e) {e.printStackTrace ();} haangsan ");}}}). Start (); // b thread new thread (new Runnable () {{ @Override public void run () {while (true) {try {thread.sleep (10);} catch (interruptedException e) {e.prin. Start ();} statique de classe statique {Lock Lock = new reentrantLoc (); ;