Я посмотрел на этот ответ , и он гласит:
При новой модели памяти, когда поток A записывает в переменную V переменную, а поток Bчитает из V, любые значения переменных, которые были видны A во время написания V, теперь гарантированно будут видны B.
Поэтому, учитывая пример:
public class Main {
static int value = -1;
static volatile boolean read;
public static void main(String[] args) {
Thread a = new Thread(() -> {
value = 1;
read = true;
});
Thread b = new Thread(() -> {
while (!read);
System.out.println("Value: " + value);
});
a.start();
b.start();
}
}
Гарантируется ли изменение на value
(от -1 до 1) быть видимым для потока b, несмотря на нестабильность value
(только read
)?
Если это так, учитываякуча изменений, которые выполняются с целью быть видимыми для другого потока, есть ли какая-либо цель сделать любую переменную, отличную от последней, изменчивой?