У меня есть два потока. Один вызывает метод обновления класса, который изменяет переменную. Другой вызывает метод обновления класса, который читает переменную. Только один поток пишет и один (или более) поток читает эту переменную. Что мне нужно делать с точки зрения параллелизма, поскольку я новичок в многопоточности?Java разделяет переменную между двумя потоками
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...
}
}
Спасибо,
Многие из нижеприведенных ответов предполагают, что вы выполняете целые манипуляции, которые могут обрабатываться классом AtomicInteger. Для чего-то более сложного, посмотрите на «синхронизированный» блок или 'java.util.conccurent.locks.Lock' – justkt