Maison >Java >javaDidacticiel >Quels sont les moyens d'implémenter la sécurité des threads en Java

Quels sont les moyens d'implémenter la sécurité des threads en Java

王林
王林avant
2019-11-27 14:55:055491parcourir

Quels sont les moyens d'implémenter la sécurité des threads en Java

Pour assurer la sécurité des threads, il faut généralement au moins deux fonctionnalités : Atomicité et Visibilité.

Méthode de mise en œuvre :

1) Utiliser synchronize : Il est atomique et visible, donc si vous utilisez l'opération de synchronisation modifiée, il est livré avec le sexe de visibilité, synchronizedUtiliser des verrous pessimistes pour assurer la sécurité des threads ;

2) Utilisez des classes atomiques au lieu de types de données de base. Les classes atomiques utilisent des verrous optimistes pour assurer la sécurité des threads. Pour exécuter a++ dans un environnement multithread, vous pouvez utiliser AtomicInteger. L'implémentation de la méthode de classe incrementAndGet() utilise également volatile pour garantir la visibilité ; utilisez Unsafe pour appeler la méthode locale native CAS, CAS utilise le verrouillage de bus ou le verrouillage de cache pour garantir l'atomicité ;

Tutoriels vidéo en ligne recommandés : Tutoriels vidéo Java

3) En utilisant le mot-clé volatile, volatile n'a pas nécessairement d'atomicité, comme l'utilisation de variables modifiées par volatile pour effectuer ++ ou - -Opération (num++), nous avons besoin pour que la variable modifiée par volatile doive être atomique, alors nous pouvons généralement la définir sur la variable de type boolean, comme suit :

volatile boolean tag = true;
线程1 while(tag){};
线程2 while(tag){};

S'il y a une variable qui augmente ou diminue, nous avons des classes atomiques ( AtomicInteger) peuvent être utilisés.

4) Utilisez ThreadLocal pour isoler chaque thread ;

5) Nous pouvons également utiliser d'autres verrous, tels que les verrous réentrants (ReentrantLock) pour assurer la sécurité des threads

6) Nous pouvons également utiliser des sections critiques, des mutex et des sémaphores pour garantir la sécurité des threads.

Cet article est recommandé par la rubrique Java Introduction Learning Tout le monde est invité à apprendre et à communiquer ensemble.

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer