Maison > Java > javaDidacticiel > Devriez-vous éviter « synchronized(this) » en Java ?

Devriez-vous éviter « synchronized(this) » en Java ?

Patricia Arquette
Libérer: 2024-12-17 02:40:24
original
509 Les gens l'ont consulté

Should You Avoid `synchronized(this)` in Java?

Faut-il éviter Synchronized(this) en Java ?

Certains développeurs préconisent de ne pas utiliser synchronisé(this), affirmant qu'un verrou sur un une référence privée est préférable. Les raisons citées incluent le vol potentiel de serrures, un débit réduit et une exposition excessive d'informations.

Vol de serrures

Bien que le vol de serrures soit un problème potentiel, il est plus susceptible de se produire involontairement en raison à un accès accidentel à la serrure. Lorsque synchronisé(this) est utilisé, le verrou devient une partie de l'interface exposée de la classe et doit être documenté en conséquence. Dans certains scénarios, un autre code peut accéder intentionnellement au verrou, par exemple lors de l'utilisation de Collections.synchronizedMap.

Débit réduit

L'affirmation selon laquelle synchronisé(ce) réduit le débit est trop simpliste. L'élimination de synchronisé(ce) à elle seule n'améliorera pas les performances. Une synchronisation appropriée nécessite une conception minutieuse pour optimiser le débit.

Exposition excessive d'informations

Synchronisé(ce) partage le verrou entre toutes les méthodes synchronisées au sein d'une classe. Si un verrouillage précis est requis, alors synchronisé (this) n'est pas applicable et doit être remplacé par un verrou privé.

Quand utiliser Synchronized(this)

Malgré les inquiétudes soulevées, synchronisé(this) reste un idiome de synchronisation valable avec plusieurs avantages :

  • C'est un idiome largement utilisé, facilitant la lisibilité et la compréhension du code.
  • Il est sûr et bien testé, offrant une synchronisation fiable.
  • Le cas échéant, il offre une solution simple pour synchroniser une classe entière.

Conclusion

Le choix entre une serrure synchronisée(ce) et une serrure privée dépend des exigences spécifiques de l'application. Bien que la synchronisation (cela) ne doive pas être complètement évitée, les développeurs doivent soigneusement examiner ses implications et utiliser un verrou privé si nécessaire, par exemple lorsque la granularité ou la dissimulation d'informations sont une priorité.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal