CodeBlanks Logo Icon CodeBlanks

synchronized

synchronized ile kritik bölgeyi öğrenirsin.

synchronized

synchronized anahtar sözcüğü, bir yöntemi ya da bloğu aynı anda yalnızca bir iş parçacığının çalıştırabileceği bir kritik bölgeye dönüştürür. Bu, paylaşılan verilere erişimi güvenli kılar.

class Counter {
    private int count = 0;
    public synchronized void inc() {
        count++;
    }
}

İki iş parçacığı aynı anda inc() çağırdığında, biri diğerini bekler. Bu, count'un doğru artmasını sağlar. synchronized blok da yazılabilir: synchronized(this) { ... }. Aşırı kullanım iş parçacıklarını sırala döndürebilir; dikkatli olun.

synchronized blok

Tüm yöntemi kilitlemek yerine yalnızca bir bölümü kilitlemek için synchronized blok kullanılır. Bu, daha küçük kritik bölge ve daha az bekleme demektir.

public void add(int n) {
    synchronized (this) {
        count += n;
    }
}

Burada this kilit nesnesidir. Farklı nesneler farklı kilitler verir; böylece ayrı parçalar paralel çalışabilir. Doğru kilit nesnesi seçmek, performans ve doğruluk için önemlidir.

Uygulama Counter ile synchronized uygula

Bir Counter sınıfı tanımla; private int count = 0 alanı olsun. public synchronized void inc() yöntemi count++ yapsın. public int get() yöntemi count döndürsün. Bir SyncDemo sınıfında main yaz; Counter örneği oluştur, inc() yöntemini üç kez çağır ve get() sonucunu yazdır.

Başlangıç kodu

Main.java
// Counter sınıfını tanımla (private int count, synchronized inc, get)

// SyncDemo sınıfında main yaz; inc'i üç kez çağır ve get sonucunu yazdır

Örnek çözüm

Main.java
class Counter {
    private int count = 0;
    public synchronized void inc() {
        count++;
    }
    public int get() {
        return count;
    }
}

class SyncDemo {
    public static void main(String[] args) {
        Counter c = new Counter();
        c.inc();
        c.inc();
        c.inc();
        System.out.println(c.get());
    }
}

Beklenen çıktı

3

Soru ve cevaplar

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

1 synchronized bir yöntem ne sağlar?

  • Yöntemin hızlı çalışmasını
  • Yöntemin yeniden adlandırılmasını
  • Yöntemin static olmasını
  • Aynı anda tek iş parçacığının çalışmasını Doğru cevap

Açıklama: synchronized, aynı anda tek iş parçacığına izin verir.

2 Eşzamanlama kavramlarını eşleştir

Kavram Anlamı
synchronized Karşılıklı dışlama
lock object Kilidi temsil eder
critical section Tek iş parçacığıyla sınırlı bölge
race condition Yarış hatası

3 synchronized yöntemi tamamla

Soru
class Counter {
    private int count = 0;
    public ____ void inc() {
        count++;
    }
}
Cevap
class Counter {
    private int count = 0;
    public synchronized void inc() {
        count++;
    }
}

Açıklama: synchronized ile yöntem bir kritik bölge olur.

İleri seviye bölümündeki tüm dersler