Je sais que l'utilisation du synchronize
mot - clé avant une méthode apporte la synchronisation à cet objet. Autrement dit, 2 threads exécutant la même instance de l'objet seront synchronisés.
Cependant, puisque la synchronisation est au niveau de l'objet, 2 threads exécutant différentes instances de l'objet ne seront pas synchronisés. Si nous avons une variable statique dans une classe Java qui est appelée par la méthode, nous aimerions qu'elle soit synchronisée entre les instances de la classe. Les deux instances s'exécutent dans 2 threads différents.
Pouvons-nous réaliser la synchronisation de la manière suivante?
public class Test
{
private static int count = 0;
private static final Object lock= new Object();
public synchronized void foo()
{
synchronized(lock)
{
count++;
}
}
}
Est-il vrai que puisque nous avons défini un objet lock
qui est statique et que nous utilisons le mot-clé synchronized
pour ce verrou, la variable statique count
est maintenant synchronisée entre les instances de la classe Test
?