Middle+
Java-da volatile açar sözü nədir və necə istifadə olunur?
sobes.tech Süni İntellekt
AI-dan cavab
volatile bütün axınlar üçün dəyişənin dəyişikliklərinin görünməsini təmin edir.
- Görünmə zəmanəti: Bir axın
volatiledəyişəni dəyişdirdikdə, digər axınlar bu dəyişiklikləri görür.volatileolmadan, dəyişikliklər axının keşiində qala bilər və əsas yaddaş ilə sinxronizasiya olunmaya bilər. - Atomik deyil:
volatileəməliyyatların atomikliyini zəmanət etmir. Artırma (i++) kimi əməliyyatlar atomik deyil və yarış vəziyyətlərinə səbəb ola bilər, həttavolatileilə belə.
İstifadə sahələri:
- Vəziyyət bayraqları: Bir axın bayrağı təyin etdikdə, digər axınlara müəyyən bir vəziyyət haqqında məlumat vermək üçün.
- Sadə oxuma/yazma əməliyyatları: Bir dəyişən üzərində əməliyyatlar, tək bir yazma və digər çoxlu oxuma ilə məhdudlaşdıqda.
Bayraq ilə istifadə nümunəsi:
// Bitirmə üçün `volatile` bayrağından istifadə nümunəsi
public class VolatileExample {
private volatile boolean terminated = false;
public void start() {
new Thread(() -> {
while (!terminated) {
// Thread-in işi
System.out.println("Thread işləyir...");
try {
Thread.sleep(100);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
System.out.println("Thread tamamlandı.");
}).start();
}
public void stop() {
terminated = true; // `volatile` dəyişənində dəyişiklik
}
public static void main(String[] args) throws InterruptedException {
VolatileExample example = new VolatileExample();
example.start();
Thread.sleep(500);
example.stop();
}
}