Волатильность на рынке: что это такое и как это поможет вам зарабатывать деньги
Volatile - это ключевое слово в Java, которое используется для указания, что переменная может изменяться не только текущим потоком, но и другими потоками. Когда переменная объявлена как volatile, это гарантирует, что любые изменения, внесенные в эту переменную одним потоком, будут немедленно доступны другим потокам.
Рассмотрим следующий пример:
public class VolatileExample {
private volatile boolean flag = false;
public void setFlag(boolean value) {
flag = value;
}
public void loopUntilFlagIsTrue() {
while (!flag) {
// do something
}
}
}
В этом примере переменная flag объявлена как volatile. Это гарантирует, что любые изменения значения flag, внесенные одним потоком, будут немедленно видны другим потокам. Это заставляет метод loopUntilFlagIsTrue() остановить свое выполнение, как только значение flag становится true.
Еще один пример использования ключевого слова volatile:
public class Singleton {
private static volatile Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
В этом примере переменная instance объявлена как volatile. Это гарантирует, что любые изменения, внесенные в переменную instance, будут немедленно видны другим потокам. Это защищает от возможных проблем, связанных с использованием ленивой инициализации в многопоточном окружении.
В итоге, ключевое слово volatile используется в Java для гарантии того, что переменная будет обновлена немедленно во всех потоках. Когда мы объявляем переменную как volatile, мы полагаемся на то, что значением этой переменной может интенсивно использоваться несколькими потоками.