Sobes.tech
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ış volatile bir değişkeni değiştirdiğinde, diğer akışlar bu değişikliği görür. volatile olmadan, değişiklikler akışın önbelleğinde kalabilir ve ana bellekle senkronize olmayabilir.
  • Atomik değil: volatile işlemlerin atomikliğini garanti etmez. Artırma (i++) gibi işlemler atomik değildir ve volatile ile 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();
    }
}