Maison >Java >Javacommencer >Quels sont les verrous courants en Java ?
Verrouillage équitable/verrouillage injuste
Le verrouillage équitable signifie que plusieurs threads s'appliquent pour les verrous selon l'ordre pour acquérir la serrure.
Le verrouillage injuste fait référence à l'ordre dans lequel plusieurs threads acquièrent des verrous. Il n'est pas dans l'ordre de demande de verrous. Il est possible que le thread qui a appliqué plus tard acquière le verrou avant le. thread qui s'est appliqué en premier. Il est possible que cela provoque une inversion de priorité ou une famine.
Verrouillage exclusif/verrouillage partagé
Le verrouillage exclusif signifie que le verrou ne peut être détenu que par un seul thread à la fois.
Le verrouillage partagé signifie que le verrou peut être détenu par plusieurs threads.
Verrouillage mutex/verrouillage en lecture-écriture
Le verrouillage exclusif/verrouillage partagé mentionné ci-dessus est un terme large, et le verrouillage mutex/verrouillage en lecture-écriture est une réalisation spécifique .
L'implémentation spécifique du verrouillage mutex en Java est ReentrantLock, et l'implémentation spécifique du verrouillage en lecture-écriture en Java est ReadWriteLock.
Verrouillage optimiste/verrouillage pessimiste
Le verrouillage optimiste et le verrouillage pessimiste ne font pas référence à des types spécifiques de verrous, mais à la perspective de visualisation de la concurrence et de la synchronisation.
Le verrouillage pessimiste estime que les opérations simultanées sur les mêmes données seront définitivement modifiées. Même s'il n'y a pas de modification, elles seront considérées comme modifiées. Ainsi, pour les opérations concurrentes sur les mêmes données, le verrouillage pessimiste prend la forme d'un verrouillage. Pessimiste, je pense que les opérations simultanées sans verrouillage poseront certainement des problèmes.
Le verrouillage optimiste estime que les opérations simultanées sur les mêmes données ne seront pas modifiées. Lors de la mise à jour des données, les données seront mises à jour en essayant de mettre à jour et de mettre à jour constamment les données. Avec un peu d'optimisme, il n'y aura aucun problème avec les opérations simultanées sans verrouillage.
D'après la description ci-dessus, nous pouvons voir que le verrouillage pessimiste convient aux scénarios avec de nombreuses opérations d'écriture, et le verrouillage optimiste convient aux scénarios avec de nombreuses opérations de lecture. Ne pas verrouiller apportera beaucoup de performances. améliorations.
L'utilisation du verrouillage pessimiste en Java consiste à utiliser différents verrous.
L'utilisation du verrouillage optimiste en Java est une programmation sans verrouillage, et l'algorithme CAS est souvent utilisé. Un exemple typique est la classe atomique, qui implémente la mise à jour des opérations atomiques via CAS spin.
Tutoriel recommandé : Tutoriel d'introduction à 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!