История изменений
Исправление
Legioner,
(текущая версия)
:
Переменная не принадлежит никакому потоку, переменная это просто ячейка памяти. private, классы и тд это всё шелуха. Без volatile компилятор может делать смелые предположения о переменной, то бишь он может считать, что она никогда не поменяется в другом потоке и кешировать её. С volatile он этих предположений делать не имеет права и всегда будет её проверять. Поэтому в данном случае надёжней использовать volatile. Хотя скорей всего и без него работать будет, JVM обычно не так агрессивно оптимизирует, как некоторые компиляторы.
Исходная версия
Legioner,
:
Переменная не принадлежит никакому потоку, переменная это просто ячейка памяти. private, классы и тд это всё шелуха. Без volatile компилятор может делать смелые предположения о переменной, то бишь он может считать, что она никогда не поменяется в другом потоке и кешировать её. С volatile он этих предположений делать не имеет права и всегда будет её проверять. Поэтому в данном случае надёжней использовать volatile. Хотя скорей всего и без него работать будет.