Зная, что
Reads and writes are atomic for all variables declared volatile
Вопрос 1:Можно ли это понимать так, будто
private volatile int x = 0;
x++;
операция атомарна?
И это
Marking variable volatile does not eliminate all need to synchronize atomic actions, because memory consistency errors are still possible.
Вопрос2:Интересно, при каких обстоятельствах (, если таковые имеются ), можно увидеть переменную, помеченную volatile
, и не увидеть никаких методов блоков, помеченных как синхронизированные (, которые пытаются получить доступ/изменить переменную )?
Другими словами, следует ли помечать volatile
все переменные, которые необходимо защитить от одновременной модификации?