Cet article étudie principalement l'utilisation de l'échangeur d'outils de synchronisation de threads de programmation Java. Jetons un coup d'œil au contenu spécifique ci-dessous.
Si deux threads doivent échanger des informations les uns des autres pendant leur fonctionnement, tels que les données ou l'espace utilisé, ils doivent utiliser la classe Exchange. L'échangeur fournit un moyen très pratique pour les threads d'échanger des informations. Il peut servir de point de synchronisation pour deux threads pour échanger des objets. Ce n'est que lorsque chaque thread entre exchange () et donne l'objet, peut-il accepter l'objet donné lorsque d'autres threads retournent.
Seuls deux threads peuvent échanger des données à la fois. S'il y a plusieurs threads, seuls deux peuvent échanger des données. Voyons un exemple commun: main dans la main et livrer les marchandises avec une seule chanson!
classe publique Exchangestest {public static void main (String [] args) {ExecutorService Service = Exécutor "Héroïne"; System.out.println ("thread" + thread.currentThread (). getName () + "Les médicaments sont sortis"); thread.sleep ((long) (math.random () * 10000)); // passer les données à échanger dans la méthode d'échange, puis des blocs, en attendant que un autre thread échange avec. (String) exchanger.Exchange (data1); System.out.println ("thread" + thread.currentThread (). GetName () + "Swap Heroine for Exchange" + Data2);} Catch (Exception e) {} Enfin {Service.shutdown (); System.out.Println ("Transaction est terminée avec l'argent!");}}}); tâche service.execute (new Runnable () {@ Override public void run () {try {string data1 = "3 millions"; system.out.println ("thread" + thread.currentThread (). getName () + "Take" + "100" (String) Exchanger.Exchange (data1); System.out.println ("thread" + thread.currentThread (). GetName () + "Get With 3 millions" + data2);} catch (exception e) {} Enfin {service.shutdown (); System.out.println ("Transaction est terminée avec exécution avec l'exécution avec héroïne! ");}}});}});}});}});}});}}D'après le code, j'ai semblé voir deux personnes échanger des drogues ... Voyons comment les résultats de la transaction sont:
Thread Pool-1-thread-1 sort l'héroïne de la drogue. Thread Pool-1-thread-2 enlève 3 millions. Thread Pool-1-thread-2 obtient l'héroïne file pool-1-thread-1 pour l'échange d'héroïne pour 3 millions. La transaction est terminée. Prenez l'héroïne et courez rapidement!
Une fois la transaction terminée, fuyez l'argent!
Il fonctionne rapidement. À en juger par les résultats en cours d'exécution, il réalise l'échange de données. Il s'agit simplement d'échanger un type de données de base. Ses réelles utilisations ne sont pas limitées à cela. Par exemple, nous pouvons échanger un objet, ce qui est utile. JDK a officiellement mentionné une demande de haut niveau:
Utilisez l'échangeur pour échanger des tampons entre les threads, donc en cas de besoin, le remplissage de filetage du tampon obtient un tampon nouvellement vacant et transmet le tampon rempli au fil de filetage ce tampon vacant.
Cela doit être basé sur la situation réelle. L'idée est la même que ci-dessus. En réalité, vous devez définir une classe tampon, puis la classe de ce tampon est échangée entre les deux fils. Quant à la façon de l'implémenter dans la classe, cela dépend de la situation réelle. C'est tout pour l'utilisation de l'échangeur ~
Ce qui précède est l'intégralité du contenu de cet article sur l'analyse d'instance d'utilisation de l'échangeur d'outils de synchronisation de fil de filetage Java, j'espère que cela sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à d'autres sujets connexes sur ce site. S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!