экономия только на бумаге, в производительности нет никакой разницы. В любой версии каждая переменная состояния должна быть «сброшена» писателем и «загружена» читателем. Нет бесплатного обеда.

о, предположим, у меня есть куча переменных, одна из которых объявлена ​​как volatile:

int a;
int b;
int c;
volatile int v;

Если один поток записывает все четыре переменные (запись вv последний), а другой поток читает из всех четырех переменных (чтение изv первый), видит ли этот второй поток значения, записанные вa, b а такжеc первым потоком, даже если они сами не объявлены изменчивыми? Или это может видеть устаревшие значения?

Поскольку, кажется, есть некоторая путаница: я не намеренно пытаюсь сделать что-то небезопасное. Я просто хочу понять модель памяти Java и семантикуvolatile ключевое слово. Чистое любопытство.

Ответы на вопрос(4)

Ваш ответ на вопрос