Middle+
Java'da volatile kalit so'zi nima va uni qanday ishlatish mumkin?
sobes.tech AI
AIdan javob
volatile barcha oqimlar uchun o'zgaruvchining o'zgarishlarini ko'rinishini ta'minlaydi.
- Ko'rinishni ta'minlash kafolati: Bir oqim
volatileo'zgaruvchini o'zgartirganda, boshqa oqimlar bu o'zgarishni ko'rishlari kafolatlanadi.volatilebo'lmagan holda, o'zgarishlar oqimning kechki xotirasida qolishi mumkin va asosiy xotira bilan sinxronlashtirilmaydi. - Atomik emas:
volatileoperatsiyalarni atomikligini kafolatlamaydi. Inkrement (i++) kabi operatsiyalar atomik emas vavolatilebilan ham raqobat sharoitlariga olib kelishi mumkin.
Qo'llaniladi:
- Holat bayroqlari: Bir oqim bayroqni o'rnatganda, boshqa oqimlarga holat haqida xabar berish uchun.
- Oddiy o'qish/yazish operatsiyalari: O'zgaruvchiga faqat bitta yozuv amalga oshiriladigan va boshqa oqimlar tomonidan ko'p marta o'qiladigan operatsiyalar uchun.
Bayroq bilan foydalanish misoli:
// Yakunlash uchun `volatile` bayrog'idan foydalanish misoli
public class VolatileExample {
private volatile boolean terminated = false;
public void start() {
new Thread(() -> {
while (!terminated) {
// Threadning ishlashi
System.out.println("Thread ishlamoqda...");
try {
Thread.sleep(100);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
System.out.println("Thread yakunlandi.");
}).start();
}
public void stop() {
terminated = true; // `volatile` o'zgaruvchining o'zgarishi
}
public static void main(String[] args) throws InterruptedException {
VolatileExample example = new VolatileExample();
example.start();
Thread.sleep(500);
example.stop();
}
}