Гарантирует, что чтение переменной всегда берет последнее записанное значение, а запись — видна всем потокам сразу. Используется для обеспечения видимости изменений между потоками, но не обеспечивает атомарность сложных операций.
Пример:
java
Здесь volatile гарантирует, что изменение isRunning в одном потоке будет видно другому потоку, который проверяет это условие в цикле.