[JAVA] Notes sur la synchronisation et l'utilisation du mot clé "synchronize"
par
, 09/12/2020 à 13h14 (732 Affichages)
- Si un objet n'est atteignable que par un seul thread, les accès concurrents sont impossibles et aucune synchronisation n'est nécessaire
- Tout objet dont la référence est stockée dans le tas est accessible par plusieurs threads.
- Un objet atteignable uniquement depuis une variable locale dans la pile ne peut être atteint que par un seul thread
- Les objets accessibles que par des objets locaux sont dans le thread local.
- Un attribut d'une classe doit être totalement synchronisé ou désynchronisé. S'il est appelé par une fonction avec le mot clé synchronize, et par une autre sans, alors la synchronisation est inconsistante et non sure (voir la règle findbug: Inconsistent synchronization).
- Si on est dans une méthode synchronisée, alors les appels à d'autres méthodes synchronisées sont aussi synchronisés et lockés. Cependant, les appels à des méthodes non synchronisées ne sont pas lockées, tout le monde peut les appeler en même temps.