Найти в Дзене
DEBAGanov

Java 1314. Что делает ключевое слово volatile?

1314. Что делает ключевое слово volatile?

Ключевое слово volatile в Java используется для гарантии, что значения полей объектов будут согласованы между потоками и не будут кэшироваться в рантайме. Кэширование может привести к непредсказуемым результатам при доступе к изменяемым полям из разных потоков исполнения.

Когда поле объявлено как volatile, Java гарантирует, что доступ к этому полю со стороны разных потоков будет согласован и последовательным. Это обеспечивает правильную синхронизацию между потоками, когда один поток записывает в это поле, а другой поток его читает.

Например:

public class MyRunnable implements Runnable {
private volatile boolean running;

public void run() {
while (running) {
// делаем что-то здесь }
}

public void stop() {
running = false;
}
}

Здесь мы объявляем поле running как volatile, чтобы гарантировать, что его значение будет согласовано между потоками. Мы используем это поле для остановки выполнения потока в методе run(), проверяя его значение на каждой итерации цикла. Метод stop() устанавливает значение running в false, чтобы остановить цикл while в методе run().

Важно отметить, что использование ключевого слова volatile не гарантирует атомарности операций чтения и записи. Для решения этой проблемы можно использовать блокировки.

1606 вопрос-ответ по Java

Курс Spring Framework

Tелеграмм каналDEBAGanov

Мое резюмеDEBAGanov

Если вам понравилось, буду признателен за подписку.