Sobes.tech
Middle

Mis on ReadWriteLock kasutamise olemus?

sobes.tech AI

Vastus AI-lt

ReadWriteLock võimaldab mitmel niidil samaaegselt lugeda jagatud ressurssi, kuid ainult üks niit saab samaaegselt kirjutada. See parandab jõudlust olukordades, kus lugemine on sagedasem kui kirjutamine.

Peamised komponendid:

  • Read Lock: Võib olla hoitud mitme niidi poolt samaaegselt.
  • Write Lock: Võib olla hoitud ainult ühe niidi poolt. Blokeerib teised kirjutajad ja lugejad.

Sarnane käitumine ilma ReadWriteLock-ita nõuaks synchronized või ReentrantLock kasutamist, mis blokeeriks kõik operatsioonid (lugemine ja kirjutamine), kuni üks niit hoiab lukku.

Kasutusnäide:

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(); // Võta lugemislukku
        try {
            // Loe andmeid
            return data;
        } finally {
            rwLock.readLock().unlock(); // Vabasta lugemislukku
        }
    }

    public void writeData(String newData) {
        rwLock.writeLock().lock(); // Võta kirjutuslukku
        try {
            // Kirjuta andmeid
            this.data = newData;
        } finally {
            rwLock.writeLock().unlock(); // Vabasta kirjutuslukku
        }
    }
}