L'environnement d'exploitation de ce tutoriel : système windows7, version java10, ordinateur DELL G3.
1. Concept
Un verrou de lecture-écriture réentrant.Le verrou de lecture-écriture maintient un ReadLock et un WriteLock en interne. La couche inférieure est toujours AQS, mais AQS n'a qu'une seule quantité d'état. Comment contrôler la lecture et l'écriture en même temps ? de l'état (int) est utilisé ici. Le bit représente l'état de lecture, les 16 bits faibles représentent l'écriture, les 16 bits forts représentent le nombre de threads acquérant le verrou de lecture et les 16 bits faibles représentent le numéro réentrant du verrou d'écriture. .
2. Principe
Implémenté à l'aide de la file d'attente CAS+AQS . Il prend en charge les verrous équitables et les verrous injustes, et la mise en œuvre des deux est similaire
3. Exemples
la classe publique ReentrantDemo implémente Runnable { Verrouillage = new ReentrantLock(); @Outrepasser public void run() { ensemble(); } ensemble vide public() { essayer { lock.lock(); System.out.println("méthode définie"); obtenir(); } attraper (Exception e) { e.printStackTrace(); } enfin { lock.unlock();//Doit être publié enfin } } public void get() { essayer { lock.lock(); System.out.println("méthode get"); } attraper (Exception e) { e.printStackTrace(); } enfin { lock.unlock(); } } public static void main (String[] arguments) { ReentrantDemo reentrantDemo = new ReentrantDemo(); new Thread(reentrantDemo).start(); } }
Ce qui précède est le test réentrant de Java ReentrantLock. Je pense qu'après avoir lu l'intégralité de l'article, tout le monde sera en mesure de comprendre dans un premier temps l'utilisation de ReentrantLock, et vous pourrez également développer le contenu associé au verrouillage réentrant après le cours.