private static Callback callback;
public Foo()
{
super(getCallback());
}
private static Callback getCallback()
{
callback = new Callback();
return callback;
}
Le constructeur Foo() peut potentiellement être appelé à partir de plusieurs threads. Mon inquiétude concerne le champ statique privé 'callback' et la méthode statique 'getCallback()'.
Comme on peut le voir, à chaque fois que 'getCallback()' est appelé, il assigne une nouvelle valeur au champ statique 'callback'.
Je pense que ce n'est pas thread-safe car le mot-clé static est toujours attaché à la classe et non à l'instance, ce qui signifie que le champ statique 'callback' d'un Foo peut potentiellement être écrasé par un autre thread qui construit un autre Foo(). Est-ce correct?
Veuillez me corriger si je me trompe. Merci!
EDIT: Mon intention est de conserver 'callback' quelque part dans la classe, afin de pouvoir le réutiliser plus tard. Mais ce n'est pas facile car Foo étend une classe dont le constructeur exige que 'callback' soit passé.