LINUX.ORG.RU

История изменений

Исправление Legioner, (текущая версия) :

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

Исходная версия Legioner, :

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