volatile используется для того, чтобы все потоки видели одну и ту же копию данных. Если есть только один поток для чтения / записи в поле, он не должен быть изменчивым. Это будет работать просто отлично, только немного медленнее.
В Java вы не очень хорошо представляете архитектуру процессора, обычно вы говорите с точки зрения потоков и многопоточности.
Я предлагаю Java Concurrency на практике, это хорошо, независимо от вашего уровня знаний, http://www.javaconcurrencyinpractice.com/
Смысл использования Java в том, что вам не нужно знать большинство деталей того, как работают потоки и т. Д. Если вы узнаете много вещей, которые вы не используете, вы, вероятно, забудете об этом. ;)