J'ai deux threads. On invoque la méthode de mise à jour d'une classe qui modifie une variable. Un autre appelle la méthode de mise à jour d'une classe qui lit la variable. Un seul thread écrit et un (ou plusieurs) threads lisent cette variable. Que dois-je faire en termes de concurrence, étant donné que je suis novice en matière de multi-threading?Java partage une variable entre deux threads
public class A
{
public int variable; // Does this need to be volatile?
// Not only int, could also be boolean or float.
public void update()
{
// Called by one thread constantly
++variable;
// Or some other algorithm
variable = complexAlgorithm();
}
}
public class B
{
public A a;
public void update()
{
// Called by another thread constantly
// I don't care about missing an update
int v = a.variable;
// Do algorithm with v...
}
}
Merci,
La plupart des réponses ci-dessous supposent que vous effectuez une manipulation d'entier qui peut être gérée par la classe 'AtomicInteger'. Pour quelque chose de plus complexe, regardez un bloc 'synchronized' ou' java.util.conccurent.locks.Lock' – justkt