Partage d'une variable entre plusieurs threads différents
Je veux partager une variable entre plusieurs threads comme ceci:
boolean flag = true;
T1 main = new T1();
T2 help = new T2();
main.start();
help.start();
J'aimerais partager flag
entre le principal et l'aide thread où ces deux classes Java que j'ai créé. Est de toute façon de le faire? Merci!
source d'informationauteur user1031431
Vous devez vous connecter pour publier un commentaire.
Les deux
T1
etT2
peut se référer à une classe contenant cette variable. Vous pouvez alors faire de cette variable volatilset cela signifie que les modifications apportées à cette variable sont immeditately visible dans les deux threads.Voir cet article pour plus d'info.
et notez les avantages/inconvénients de l'utilisation de volatiles vs plus complexe des moyens de partage de l'état.
En plus d'autres suggestions à faire, vous pouvez également placer le drapeau dans une classe de contrôle et de faire un dernier exemple de cela dans votre classe parent:
Pour le rendre visible entre les instances de
T1
etT2
vous pourriez faire les deux classes contiennent une référence à un objet qui contient la variable.Si la variable est modifiée lorsque les threads en cours d'exécution, vous devez tenir compte de la synchronisation. La meilleure approche dépend de vos besoins exacts, mais les principales options sont les suivantes:
volatile
;AtomicBoolean
;Vous pouvez utiliser le verrou de variables "a" et "b" et de les synchroniser pour le verrouillage de la "section critique" dans le sens inverse. Par exemple. Signaler"," Verrouiller "b" ,"IMPRIMER", Notifier "b", puis Verrouiller "un".
Veuillez consulter ci-dessous le code :-
}
De SORTIE :-
1 Un
2 B
3 Un
4 B
5 Un
6 B
7 Un
8 B
9 Un
10 B