Java’da synchronized Block Kullanımı

sametklou

Java’da synchronized Block Kullanımı

Java programlama dilinde, birden fazla thread'in aynı anda aynı kaynağa erişmemesi için synchronized bloklar kullanılır. Bu bloklar, thread'ler arasında senkronizasyon sağlayarak veri bütünlüğünü korur.

synchronized Block Nedir?

Bir synchronized blok, yalnızca belirli bir thread tarafından çalıştırılabilecek kod parçacığıdır. Bu bloklar, paylaşılan değişkenlere veya kaynaklara eş zamanlı erişimi kontrol etmek için kullanılır.

synchronized Blok Kullanımı

public class SynchronizedExample {

    private static int count = 0;

    public void increment() {
        synchronized(this) {
            count++;
            System.out.println(Thread.currentThread().getName() + " Count: " + count);
        }
    }

    public static void main(String[] args) {
        SynchronizedExample example = new SynchronizedExample();

        // 2 farklı thread oluşturma
        Thread thread1 = new Thread(() -> {
            for(int i=0; i<5; i++) {
                example.increment();
            }
        });

        Thread thread2 = new Thread(() -> {
            for(int i=0; i<5; i++) {
                example.increment();
            }
        });

        thread1.start();
        thread2.start();
    }
}

Yukarıdaki örnekte, increment metodu bir synchronized blok içinde tanımlanmıştır. Bu blok sayesinde count değişkenine aynı anda iki thread'in erişmesi engellenir.

synchronized Block Kullanırken Dikkat Edilmesi Gerekenler

  • synchronized blokların optimum kullanımı, sadece gerçekten ihtiyaç duyulduğunda olmalıdır. Çünkü bu blokların performans üzerinde negatif etkileri olabilir.
  • synchronized blokların kapsamı mümkün olduğunca küçük olmalıdır, bu da deadlock riskini azaltır.
  • Eğer tüm metodun senkronizasyonu gerekiyorsa, metodun başına synchronized anahtar kelimesi kullanılabilir.

Java'da synchronized bloklar, çoklu thread programlaması sırasında veri bütünlüğünü korumak için güçlü bir araçtır. Ancak doğru kullanılmadığında performans sorunlarına neden olabilirler. Bu nedenle, synchronized blokların dikkatli bir şekilde kullanılması önemlidir.