Получается что все поля к которым доступ может быть из нескольких потоков должны быть volatile. И допустим lock в таком случае что делать будет.
Опять же про оптимизации jit Сергей говорил.
Короче мутная тема, как определить когда надо volatile а когда нет... в примере Сергея вообще неочевидное поведение jit, слишком неопределённо
Да и люди через одного скажут, ух, volatile, первый раз вижу