JavaWeb 06 Remarque: le mécanisme de verrouillage en Java (synchronisation) - synchronisée

synchronisée

Utilisation:
1 comme modificateur de méthode, écrite avant la définition de la méthode.
1) Méthode de synchronisation: modification synchronisée de la méthode classique, cette référence est de verrouiller l'objet pointé

synchronized void method(){  
}

2) Méthode de statique synchrone: modification synchronisée de la méthode statique, la serrure est 类名.classun point de référence à l'objet (classe elle - même a aussi un objet, vous pouvez trouver des références à l'objet (reflétée par l'utilisation du nom de la classe .class))

synchronized static void method(){
}

2 en tant que bloc de code
1) bloc de synchronisation: le verrou est un point de référence à l'objet (l'objet à l' intérieur de la serrure)

void method(){
 Object a = new Object();
 synchronized(一个引用){  
}
}

3 relations d'équivalence
1) méthode statique est équivalent au bloc statique modifié

class A{
synchronized static void method(){}
}
class A{
 static void method(){
 	synchronized(A.class){}
 }
 }

2) modification de la méthode classique est équivalente à la séquence normale

synchronized void function{} 
 void function(){
	 synchronized(this){};
 }

Objet: Object est un résumé d'une zone de mémoire de tas, l'objet est enregistré dans une variété d'attributs.

Remarque:

  • Lorsque les implémentations JVM, chaque objet a un verrou, chaque objet peut être utilisé comme un verrou (moniteur de verrouillage) - (Moniteur / genlock / verrouillage du moniteur).
    Par exemple: Object o = new Object () ; // o ce point de référence à un sujet, a un verrou
  • Après grab un échec de verrouillage de fil, il faut laisser le CPU, et pas plus le droit de saisir le verrou, transformé en l'état de Runnable bloqué (conçu pour l'état synchronisé n'a pas réussi à saisir la conception de verrouillage), déplacé de la file d'attente de blocage file d'attente prête.
  • Lorsque le déverrouillage de l'exécution du fil, libérera la serrure et la course était due à l'échec du fil de verrouillage de Bloqué changé Runnable, il a encore une fois les qualités requises pour saisir le verrou, le blocage de la file d'attente déplacé de la file d'attente prête.
  • processus Synchronisé besoin d'utiliser le verrou d'objet, il est également une solution de référence
Object a = null; 
 synchronized(a){
   //肯定会抛NullPointerException 
   }
Publié 54 articles originaux · a gagné les éloges 6 · vues 4788

Je suppose que tu aimes

Origine blog.csdn.net/glpghz/article/details/104904053
conseillé
Classement