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