Telegram Group & Telegram Channel
Вопрос на собеседовании

Что такое volatile в Java и в каких случаях его следует использовать?

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

Однако volatile не заменяет блокировку (synchronized) и не обеспечивает атомарности операций. Его рекомендуется использовать для переменных, доступ к которым происходит через чтение/запись, но не требует сложной синхронизации, например, для флагов или индикаторов состояния.


Пример использования ⚙️
public class VolatileExample {
private volatile boolean flag = true;

public void run() {
new Thread(() -> {
while (flag) {
System.out.println("Работаем...");
}
System.out.println("Остановка");
}).start();

try {
Thread.sleep(1000);
flag = false; // изменение станет сразу видимым для первого потока
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}

public static void main(String[] args) {
new VolatileExample().run();
}
}


Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥3



tg-me.com/Java_per_month/3051
Create:
Last Update:

Вопрос на собеседовании

Что такое volatile в Java и в каких случаях его следует использовать?

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

Однако volatile не заменяет блокировку (synchronized) и не обеспечивает атомарности операций. Его рекомендуется использовать для переменных, доступ к которым происходит через чтение/запись, но не требует сложной синхронизации, например, для флагов или индикаторов состояния.


Пример использования ⚙️

public class VolatileExample {
private volatile boolean flag = true;

public void run() {
new Thread(() -> {
while (flag) {
System.out.println("Работаем...");
}
System.out.println("Остановка");
}).start();

try {
Thread.sleep(1000);
flag = false; // изменение станет сразу видимым для первого потока
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}

public static void main(String[] args) {
new VolatileExample().run();
}
}


Java Learning 👩‍💻

BY Java Learning


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/Java_per_month/3051

View MORE
Open in Telegram


Java Learning Telegram | DID YOU KNOW?

Date: |

The messaging service and social-media platform owes creditors roughly $700 million by the end of April, according to people briefed on the company’s plans and loan documents viewed by The Wall Street Journal. At the same time, Telegram Group Inc. must cover rising equipment and bandwidth expenses because of its rapid growth, despite going years without attempting to generate revenue.

That growth environment will include rising inflation and interest rates. Those upward shifts naturally accompany healthy growth periods as the demand for resources, products and services rise. Importantly, the Federal Reserve has laid out the rationale for not interfering with that natural growth transition.It's not exactly a fad, but there is a widespread willingness to pay up for a growth story. Classic fundamental analysis takes a back seat. Even negative earnings are ignored. In fact, positive earnings seem to be a limiting measure, producing the question, "Is that all you've got?" The preference is a vision of untold riches when the exciting story plays out as expected.

Java Learning from us


Telegram Java Learning
FROM USA