экономия только на бумаге, в производительности нет никакой разницы. В любой версии каждая переменная состояния должна быть «сброшена» писателем и «загружена» читателем. Нет бесплатного обеда.
о, предположим, у меня есть куча переменных, одна из которых объявлена как volatile:
int a;
int b;
int c;
volatile int v;
Если один поток записывает все четыре переменные (запись вv
последний), а другой поток читает из всех четырех переменных (чтение изv
первый), видит ли этот второй поток значения, записанные вa
, b
а такжеc
первым потоком, даже если они сами не объявлены изменчивыми? Или это может видеть устаревшие значения?
Поскольку, кажется, есть некоторая путаница: я не намеренно пытаюсь сделать что-то небезопасное. Я просто хочу понять модель памяти Java и семантикуvolatile
ключевое слово. Чистое любопытство.