java - ReentrantLock et synchronisé
天蓬老师
天蓬老师 2017-05-17 10:03:59
0
2
772

Lorsque la concurrence pour les ressources n'est pas très féroce, les performances de Synchronized sont meilleures que celles de ReetrantLock, mais lorsque la concurrence pour les ressources est féroce, les performances de Synchronized chuteront des dizaines de fois, mais les performances de ReetrantLock peuvent rester normales

(1) Pourquoi est-ce ?
(2) ReentrantLock est-il un verrou léger ? Que sont les serrures légères ? Je n'ai entendu parler que de ce nom, mais je n'ai jamais vu de mise en œuvre concrète

Lors de l'utilisation de synchronisé, si le programme ne s'exécute pas correctement, une exception sera levée, mais aucun travail de nettoyage ne sera effectué. Utiliser ReentrantLock vous permet d'essayer d'acquérir un verrou mais finalement de ne pas l'acquérir, de sorte que si quelqu'un d'autre a acquis le verrou, vous pouvez partir faire autre chose (mais ce que je veux faire maintenant, c'est effectuer certaines opérations après avoir acquis le verrou ), cela n'a pas beaucoup de sens de passer à autre chose maintenant), au lieu d'attendre que le verrou soit libéré.

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

répondre à tous(2)
仅有的幸福

Tout d'abord, la situation que vous avez mentionnée n'existait que lorsque ReentrantLock a été introduit pour la première fois dans Java 1.5. Java 1.6 a modifié l'algorithme d'implémentation synchronisé, qui est fondamentalement cohérent avec l'implémentation de ReentrantLock, de sorte que la différence de performances entre les deux est déjà très faible. .
Concernant les verrous légers, il s'agit d'un moyen d'améliorer les performances des verrous introduit dans Java 1.6. Il appartient au niveau JVM et il n'y a pas d'implémentation spécifique.
Si vous souhaitez attendre que le verrou soit libéré, vous pouvez utiliser Lock.lock() pour obtenir le verrou. L'utilisation de Lock.tryLock() tente d'obtenir le verrou et ne pourra peut-être pas l'obtenir.

左手右手慢动作

On peut comprendre simplement que les pages de lecture et d'écriture synchronisées s'excluent mutuellement, mais ReentrantLock a des verrous de lecture et d'écriture qui peuvent être partagés, mais les verrous d'écriture s'excluent mutuellement. Si vous le regardez d'ici, ReentrantLock lira plus et. écrivez moins. Les performances seront beaucoup plus élevées, mais le code est plus compliqué que synchronisé et il est facile de causer des problèmes si le contrôle n'est pas bon.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!