Principes fondamentaux du filetage 02 synchronisation et communication du filetage

La lecture a sonné pendant cinq jours. 2021-08-19 22:45:40 阅读数:511

principes fondamentaux du filetage synchronisation

Synchronisation des fils Et Communications
 

Trois façons de synchroniser les fils

  • Bloc de code de synchronisation
  • Méthode de synchronisation
  • LockVerrouillage

 

Bloc de code de synchronisation

synchrnoized(Moniteur de synchronisation)
{
//Code à synchroniser(Code d'exploitation des données partagées)
}

  • 1.
  • 2.
  • 3.
  • 4.

 

Simuler une banque pour retirer de l'argent
Besoins:Deux utilisateurs récupèrent de l'argent de la même carte,Le total est de10000,Chaque prise1000,Solde insuffisant1000Heure,Pas de retrait

image.png
image.png

 

Méthode de synchronisation

public void run(){
method(); // Appeler la méthode de synchronisation 
}
//RéalisationRunnable Méthode de synchronisation de l'interface 
private synchronized void method(){
// Code à synchroniser 
}
//SuccessionThread Méthode de synchronisation de la classe 
private static synchronized void method(){
// Code à synchroniser 
}

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.

 

Vente de billets par fenêtre analogique
Besoins: Billetterie à trois fenêtres 100Zhang., Pas de surréservation

image.png
image.png

 

LocktVerrouillage

//1.InstanciationReentrantLockCatégorie
private ReentrantLock lock = new ReentrantLock(true); //Verrouillage équitable
private ReentrantLock lock = new ReentrantLock(); // Verrouillage injuste par défaut 
public void lockTest() {
try {
//2. Appeler la méthode de verrouillage lock()
lock.lock();
//......... Voici le code à synchroniser 
} finally {
//3.Relâchez la serrure.
lock.unlock();
}
}

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.

 

Simuler l'épargne de l'utilisateur
Besoins: Deux utilisateurs déposent chacun sur le même compte 3000Yuan, Chaque dépôt 1000,Dépôt3Une fois. Imprimer le solde après chaque dépôt

image.png
image.png
image.png


synchrnoized Avec Lock Comparaison

Même chose.
       Peut réaliser la synchronisation des fils , Résoudre les problèmes de sécurité des fils .
La différence
      synchrnoized Après avoir exécuté le Code de synchronisation ,La serrure se libère automatiquement;Lock Le verrouillage de synchronisation doit être activé manuellement , Déverrouiller manuellement après l'exécution du Code de synchronisation .


Un modèle mono - instance paresseux sans fil

 
image.png
image.png


Communication par fil

 

Contrôle d'un fil à l'autre
Besoins:Démarrer deux Threads, Impression aléatoire du premier fil 100 Entier à l'intérieur , Jusqu'à ce que le deuxième thread appuie sur “QClé”Fin

image.png
image.png
image.png

 

Trois méthodes de communication par fil

wait( )、notify( ) 、notifyAll( )
Les trois méthodes doivent être utilisées dans un bloc de code de synchronisation ou une méthode de synchronisation
L'appelant des trois méthodes doit être un moniteur de synchronisation
Mise en œuvrewait( )La méthode, Le thread est bloqué , Relâchez la serrure de synchronisation

image.png
image.png


sleep Et wait La différence entre

Même chose.
      Mise en œuvresleep()Ouwait()Après la méthode, Les fils sont bloqués
La différence
      sleep()- Oui.ThreadMéthode de la classe, Peut être dans n'importe quelle scène ,Appelezsleep()Après la méthode, Verrouillage de synchronisation non libéré
      wait()- Oui.ObjectMéthode de la classe, La méthode de synchronisation de charge ou le bloc de code de synchronisation doivent être utilisés ,Appelezwait()Après la méthode,Verrouillage de synchronisation libéré


Producteurs/ Cas des consommateurs

      ProducteursProductor Produire des produits pour le personnel de magasin Clerk
      ConsommateursCustomer Consommation de produits auprès des commis
       La quantité maximale de produits détenus par le personnel du magasin est: 20, Le volume du produit dépasse 20Heure, L'assistant a dit aux producteurs d'arrêter la production , Jusqu'à ce que la quantité de produit soit inférieure à 20, Les producteurs continuent de produire
       Si le produit n'est plus disponible , Le Greffier a demandé aux consommateurs d'arrêter , Jusqu'à ce qu'il y ait un produit à consommer

image.png
image.png
image.png
image.png
image.png




Copyright:Cet article est[La lecture a sonné pendant cinq jours.]Établi,Veuillez apporter le lien original pour réimprimer,remercier。 https://fra.fheadline.com/2021/08/20210819224503819r.html