Ich habe zwei Threads. Man ruft die Aktualisierungsmethode einer Klasse auf, die eine Variable modifiziert. Ein anderes ruft die Update-Methode einer Klasse auf, die die Variable liest. Nur ein Thread schreibt und ein (oder mehrere) Threads lesen diese Variable. Was muss ich in Bezug auf Nebenläufigkeit tun, da ich neu im Multithreading bin?Java teilen eine Variable zwischen zwei 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...
}
}
Danke,
Viele der folgenden Antworten gehen davon aus, dass Sie Integer-Manipulationen durchführen, die von der Klasse "AtomicInteger" gehandhabt werden können. Für etwas Komplexeres, schaue auf einen 'synchronisierten' Block oder die' java.util.conccurent.locks.Lock' – justkt