Méthodes synchronisées en Java
Voulais juste vérifier que je le comprends. Une méthode synchronisée ne pas créer un thread, non? Elle seule permet de s'assurer qu'aucun autre thread n'est en invoquant cette méthode alors qu'un thread dans le même processus (c'est à dire la JVM) est de l'utiliser, non?
source d'informationauteur user919860
Vous devez vous connecter pour publier un commentaire.
Droit.
Droit.
Pour plus d'informations, lire Synchronisé Méthodes. Je recommande également la lecture de Java de la Simultanéité dans la Pratique.
C'est la plupart du temps correct. L'appel d'une méthode synchronisée ne pas générer un nouveau thread. C'est tout simplement d'autres blocs de threads lorsqu'ils essayent d'appeler tout autre méthode synchronisée pour cette instance de cet objet.
L'essentiel à retenir est que tous synchronisés les méthodes d'une classe d'utiliser la même serrure.
Oui.
Il y a un autre rôle important pour la synchronisation de blocs de trop: quand un thread entre dans un bloc synchronisé il voit le changement de valeurs effectué par le précédent thread qui a eu accès à ce bloc (ou un autre bloc synchronisé avec la même serrure).
Essentiellement sur un processeur multicœur, chaque thread dans sa propre mémoire cache sur son cœur: chaque noyau possède des copies de ces mêmes variables, leurs valeurs peuvent être différentes sur chaque cœur.
Quand il y a un fonctionnement synchronisé, la JVM permet de s'assurer que les valeurs des variables sont copiés à partir d'une mémoire cache à l'autre. Un fil de la saisie d'un synchronzed bloc voit alors les valeurs de "mise à jour" par un thread précédent.
Comme suggéré par mre, Java Simultanéité, dans la Pratique, est une bonne référence si vous voulez vraiment comprendre le multithreading et apprendre les meilleures pratiques.