Le multithreading a trois caractéristiques majeures, à savoir :
Atomicité, visibilité, ordre
1 Qu'est-ce qu'un atome ?
signifie qu'une ou plusieurs opérations sont soit entièrement exécutées et que le processus d'exécution ne sera interrompu par aucun facteur, soit qu'elles ne sont pas exécutées du tout.
Un exemple très classique est le problème du transfert de compte bancaire :
Par exemple, si vous transférez 1 000 yuans du compte A vers le compte B, cela doit comprendre deux opérations : soustraire 1 000 yuans du compte A , et virement sur le compte A. Le compte B ajoute 1 000 yuans. Ces deux opérations doivent être atomiques pour garantir qu'aucun problème inattendu ne se produise.
La même chose est vraie lorsque nous exploitons des données, telles que i = i+1 ; ce qui inclut la lecture de la valeur de i, le calcul de i et l'écriture de i. Cette ligne de code n'est pas atomique en Java, donc le fonctionnement multithread posera certainement des problèmes, nous devons donc également utiliser la synchronisation et le verrouillage pour garantir cette fonctionnalité.
(Tutoriel vidéo recommandé : vidéo Java )
2. Qu'est-ce que la visibilité
Quand plusieurs fils de discussion accèdent au même Quand une variable est modifiée et un thread modifie la valeur de la variable, les autres threads peuvent immédiatement voir la valeur modifiée.
Si les deux threads sont sur des processeurs différents, alors le thread 1 change la valeur de i et ne l'a pas actualisé dans la mémoire principale, et le thread 2 utilise à nouveau i, alors la valeur i doit toujours être la même que avant. Le thread 1 a une paire de variables. La modification que le thread 2 n'a pas vue était un problème de visibilité.
3. Qu'est-ce que l'ordre ?
L'ordre d'exécution du programme est exécuté dans l'ordre du code.
D'une manière générale, afin d'améliorer l'efficacité du fonctionnement du programme, le processeur peut optimiser le code d'entrée. Il ne garantit pas que l'ordre d'exécution de chaque instruction du programme est cohérent avec l'ordre du code, mais cela garantira que le programme est finalement exécuté. Le résultat est cohérent avec le résultat de l'exécution séquentielle du code. Comme suit :
int a = 10; //语句1 int r = 2; //语句2 a = a + 3; //语句3 r = a*a; //语句4
En raison d'un réordonnancement, il peut également exécuter l'ordre 2-1-3-4, 1-3-2-4, mais il est absolument impossible de 2-1-4-3, parce que ces dépendances sont rompues.
Évidemment, la réorganisation ne posera aucun problème pour un fonctionnement monothread, mais pas nécessairement pour le multi-threading, nous devons donc considérer ce problème lors de la programmation avec multi-threading.
Tutoriel recommandé : Démarrer avec Java
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

VSCode Windows 64 bits Télécharger
Un éditeur IDE gratuit et puissant lancé par Microsoft

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Listes Sec
SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.

SublimeText3 version anglaise
Recommandé : version Win, prend en charge les invites de code !

Dreamweaver CS6
Outils de développement Web visuel