volatile
переменные не синхронизированы (по крайней мере, не так, как synchronized
материал синхронизирован). Что делает volatile
, так это гарантирует, что переменная извлекается при каждом ее использовании (то есть: она предотвращает определенные виды оптимизации), и IIRC, что она читается и записывается в правильном порядке. Это может предположительно эмулировать некоторые виды синхронизации, но это не может работать так же, если ваш установщик должен установить более одной вещи. (Например, если вы установите две volatile
переменные, будет точка, в которой одна из них установлена, а другая - нет.)