Middle+
Java'da volatile anahtar kelimesi nedir ve nasıl kullanılır?
sobes.tech yapay zeka
AI'dan gelen yanıt
volatile tüm akışların değişiklikleri görmesini sağlar.
- Görünürlük garantisi: Bir akış
volatilebir değişkeni değiştirdiğinde, diğer akışlar bu değişikliği görür.volatileolmadan, değişiklikler akışın önbelleğinde kalabilir ve ana bellekle senkronize olmayabilir. - Atomik değil:
volatileişlemlerin atomikliğini garanti etmez. Artırma (i++) gibi işlemler atomik değildir vevolatileile bile yarış durumlarına yol açabilir.
Kullanım alanları:
- Durum bayrakları: Bir akış, diğerlerine bir durumu bildirmek için bayrak ayarladığında.
- Basit okuma/yazma işlemleri: Bir değişken üzerinde yapılan işlemler, tek seferlik yazma ve diğerleri tarafından çoklu okuma içerdiğinde.
Kullanım örneği bayrak ile:
// Sonlandırma bayrağı için volatile kullanımı örneği
public class VolatileExample {
private volatile boolean terminated = false;
public void start() {
new Thread(() -> {
while (!terminated) {
// İşlem
System.out.println("İşlem devam ediyor...");
try {
Thread.sleep(100);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
System.out.println("İşlem tamamlandı.");
}).start();
}
public void stop() {
terminated = true; // volatile değişken değişikliği
}
public static void main(String[] args) throws InterruptedException {
VolatileExample example = new VolatileExample();
example.start();
Thread.sleep(500);
example.stop();
}
}