volatile
- Java kursu
- Uzman
- Ders 9/46
- 5 dk
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
// Flag sınıfını tanımla
// volatile ready alanı ve set ekle
// main içinde sonucu yazdırÖrnek çözüm
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
private ____ boolean ready;
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.