Sobes.tech
Middle

ReadWriteLock istifadə etmənin mahiyyəti nədir?

sobes.tech Süni İntellekt

AI-dan cavab

ReadWriteLock çox sayda axını eyni zamanda paylaşılan resursu oxumağa imkan verir, lakin yalnız bir axın eyni zamanda ona yaza bilər. Bu, oxuma əməliyyatlarının yazma əməliyyatlarından daha çox olduğu ssenarilərdə performansı artırır.

Əsas komponentlər:

  • Read Lock: Eyni vaxtda bir neçə axın tərəfindən saxlanıla bilər.
  • Write Lock: Yalnız bir axın tərəfindən saxlanıla bilər. Digər yazarları və oxuyucuları bloklayır.

ReadWriteLock olmadan oxşar davranış synchronized və ya ReentrantLock istifadə etməklə həyata keçirilərdi, bu da bütün əməliyyatları (oxuma və yazma) hər hansı bir axın lock tutarkən bloklayardı.

İstifadə nümunəsi:

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(); // Oxuma lock-u əldə edir
        try {
            // Məlumatları oxu
            return data;
        } finally {
            rwLock.readLock().unlock(); // Oxuma lock-unu azad et
        }
    }

    public void writeData(String newData) {
        rwLock.writeLock().lock(); // Yazma lock-u əldə edir
        try {
            // Məlumatları yaz
            this.data = newData;
        } finally {
            rwLock.writeLock().unlock(); // Yazma lock-unu azad et
        }
    }
}