Sobes.tech
Middle

ReadWriteLock kullanmanın özü nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

ReadWriteLock, paylaşılan kaynağı aynı anda birden fazla akışın okuyabileceği, ancak yalnızca bir akışın aynı anda yazabileceği şekilde izin verir. Bu, okuma işlemlerinin yazma işlemlerinden daha sık gerçekleştiği senaryolarda performansı artırır.

Ana bileşenler:

  • Read Lock: Aynı anda birden fazla akış tarafından tutulabilir.
  • Write Lock: Sadece tek bir akış tarafından tutulabilir. Diğer yazarları ve okuyucuları engeller.

Benzer davranış, ReadWriteLock olmadan synchronized veya ReentrantLock kullanmayı gerektirirdi, bu da herhangi bir akış kilidi tutarken tüm okuma ve yazma işlemlerini engellerdi.

Kullanım örneği:

import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;

class SharedResource {
    private final ReadWriteLock rwLock = new ReentrantReadWriteLock();
    private String data = "Initial Data";

    public String readData() {
        rwLock.readLock().lock(); // Okuma kilidini al
        try {
            // Veriyi oku
            return data;
        } finally {
            rwLock.readLock().unlock(); // Okuma kilidini serbest bırak
        }
    }

    public void writeData(String newData) {
        rwLock.writeLock().lock(); // Yazma kilidini al
        try {
            // Veri yaz
            this.data = newData;
        } finally {
            rwLock.writeLock().unlock(); // Yazma kilidini serbest bırak
        }
    }
}