Что такое ключевое слово volatile в Java
Ключевое слово Java volatile гарантирует, что значение переменной volatile всегда будет считаться из основной памяти, а не из локального кэша Thread. Это означает, что каждое чтение изменчивой переменной будет считаться из основной памяти компьютера, а не из кэша ЦП, и что каждая запись в изменчивую переменную будет записана в основную память, а не только на кеш процессора. Ключевое слово Java volatile не может использоваться с методом или классом, и его можно использовать только с переменной.
private volatile boolean open = false;
Java имеет синхронизированные методы и синхронизированные блоки. Нет «синхронизированной» переменной. Использование синхронизируемого ключевого слова с переменной является незаконным и приведет к ошибке компиляции. Вместо синхронизированной переменной в Java вы можете иметь переменную Java volatile, которая будет инструктировать потоки JVM (Java Virtual Machine) для чтения значения изменчивой переменной из основной памяти и не кэшировать ее локально.