CodeBlanks Logo Icon CodeBlanks

volatile

volatile ile görünür değişkeni öğrenirsin.

volatile ve görünürlük

volatile anahtar sözcüğü, bir alanın her okumasının doğrudan ana bellekten yapılmasını sağlar. Böylece bir iş parçacığının yazdığı değer, diğer iş parçacıkları tarafından anında görülür; her iş parçacığının kendi önbelleğinde eski değer kalması önlenir.

Örnek: volatile boolean ready. Bir iş parçacığı ready = true yazdığında, diğer iş parçacığı ready okuduğunda true görür. volatile yalnızca görünürlük sağlar; birden çok iş parçacığının aynı anda yazması gibi karmaşık durumları tek başına çözmez, orada synchronized gerekir.

volatile ne zaman yeterli olur

volatile, bir bayrak ya da tek bir değişkenin iş parçacıkları arasında paylaşıldığı durumlarda yeterlidir. Örneğin bir ready bayrağı yazılıp okunuyorsa, volatile okumanın güncel değeri görmesini sağlar.

Ancak count++ gibi oku-yaz işlemleri atomik değildir; iki iş parçacığı aynı anda artırırsa değer kaybı olur. Böyle durumlarda synchronized ya da AtomicInteger kullanmak gerekir. volatile yalnızca görünürlüğü garanti eder, atomikliği değil.

Uygulama volatile bayrak ile görünürlük

Bir Flag sınıfı yaz: volatile boolean ready alanı, void set() yöntemi ready = true yapsın ve boolean isReady() ready döndürsün. main içinde new Flag() ile oluştur, set çağır ve isReady sonucunu System.out.println ile yazdır.

Başlangıç kodu

Main.java
// Flag sınıfını tanımla
// volatile ready alanı ve set ekle
// main içinde sonucu yazdır

Örnek çözüm

Main.java
class Flag {
    volatile boolean ready;
    public void set() { ready = true; }
    public boolean isReady() { return ready; }
}

public class VolatileDemo {
    public static void main(String[] args) {
        Flag f = new Flag();
        f.set();
        System.out.println(f.isReady());
    }
}

Beklenen çıktı

true

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 volatile alanı tanımla

Soru
private ____ boolean ready;
Cevap
private volatile boolean ready;

Açıklama: volatile görünürlük garantisi verir.

2 Anahtar sözcükleri eşleştir

Kavram Anlamı
volatile Görünürlük
synchronized Happens-before
final Değişmezlik
new Öbek ayırma

3 volatile bir alan neyi garanti eder?

  • Tek örnek
  • Çalışma anında görünürlük Doğru cevap
  • Sınıf metadata'sı
  • Değişmezlik

Açıklama: volatile, alanın görünürlüğünü garanti eder.

Uzman bölümündeki tüm dersler