L'exemple de cet article indique l'utilisation de la synchronisation du thread Java. Partagez-le pour tout le monde pour votre référence. L'analyse spécifique est la suivante:
L'utilisation du multi-étanchéité offre beaucoup de commodité à nos procédures, et cela nous apporte également des problèmes que nous n'avons jamais considérés dans le passé. Lorsque nous utilisons des ressources partagées multipliées, des accidents se produiront: par exemple, nous sortons pour manger ensemble, tout le monde est un fil et la nourriture sur la table est des ressources partagées. J'ai vu l'objectif, quand je l'ai vu, j'ai soudainement ~~~ les cuisses de poulet ont disparu, et un fil plus proche de l'assiette le tenait fièrement.
Afin d'éviter l'occurrence des problèmes ci-dessus, Java nous fournit un «modificateur synchronisé (synchronisation) pour éviter les conflits de ressources. Un verrouillage de machine (verrouillage), qui est inhérent au reste de sa vie et n'a pas besoin d'écrire de code pour l'activer. Lorsque nous appelons une fonction synchronisée, l'objet sera verrouillé et toutes les fonctions synchronisées dans l'objet ne peuvent pas être appelées tant que la première fonction n'est pas exécutée et que le verrouillage est déverrouillé.
Importation java.awt.borderlayout; Javax.swing.jTextArea; Compte, le montant du dépôt bancaire est affiché par le montant du dépôt bancaire pour afficher la xtarine privée = null; une interface de retrait bancaire * / public testmain5 () {super ("test de synchronisation du thread"); = new JTextArea (); ("Tour d'horloge sous-branch", MyAccouts, Bank.dea l_saving, 800); MyAccouts, Bank.deal_fetch, 200); New Bank ("Yanta Sub-Branch", MyAccouts, Bank.deal_fetch, 400); "TUGEN SUB-BRANCH", MyAccouts, Bank.Deal_Fetch, 700); SPD (SPD (SP); .exit_on_close); Fonctionnalités * / Classe Bank étend Thread {/ *** Field statique: il est utilisé pour indiquer le stockage * / public static final dans Defining_saving = 0; / *** Field statique: il est utilisé pour indiquer l'extraction de * / public Final statique. * @ Param MyAccouts mon compte bancaire * @param comportement d'achat, champ de référence: Dead_saving ou Defer_Fetch * @param compter le numéro monétaire * / bancaire public (nom de chaîne, myAccouts myAccouts, in t buy, int count) {super (nom); MyAccouts = MyAccouts; dépôt commercial $ count = myAccount.saving (count);} else if (buy == bankal_fetch) {// si c'est un sevrage de retrait $ count = myAccounts.fetch (count);} text.settext (Integer.tostring ($ Count )); Textarea.append ("/ n" + this.getName () + "+ (acheter == bankal_saving? = 1100; public myAccounts () {} / *** 查 询 * / public inq uire () {{{synchronisé (count) Après l'achèvement * / public int Saving (int c) {synchronisé (count) {// Return Count + = C; Vérifiez d'abord le dépôt dans le compte $ Count + = C; Try {Thread.Sleep (Thread.Sleep (Thread.Sleep 1000); // Afin de mieux observer, l'entreprise s'arrête ici pour 1 seconde} Catch (InterruptedException Ex) {ex.printStackTrace ();} count = $ count; {synchronisé (count) {// return count - = c; C; Numéro de dépôt}}} public static void main (String [] args) {new TestMain5 ();}}On espère que cet article est utile à la conception du programme Java de tous.