понадобится? --- У вас уже есть ответ: если последнее измененное всегда является первым, прочитанным другим потоком, то нет необходимости делать другие изменчивыми. Если вы не можете сделать эту гарантию, ответ: это зависит!
трел наэтот ответи в нем говорится, как:
Согласно новой модели памяти, когда поток 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
)?
Если это так, учитывая кучу изменений, которые выполняются с целью быть видимыми для другого потока, есть ли какая-либо цель сделать переменную, отличную от последней, изменчивой?