Sobes.tech
Middle
273

Kuo iš esmės yra ReadWriteLock naudojimas?

Atsakymas iš AI

sobes.tech AI

ReadWriteLock leidžia keliems srautams vienu metu skaityti bendrą išteklių, tačiau tik vienas srautas gali vienu metu rašyti į jį. Tai pagerina našumą scenarijuose, kur skaitymas yra dažnesnis nei rašymas.

Pagrindiniai komponentai:

  • Read Lock: Gali būti laikomas kelių srautų vienu metu.
  • Write Lock: Gali būti laikomas tik vieno srauto. Blokuoja kitus rašytojus ir skaitytojus.

Panašus elgesys be ReadWriteLock reikalautų naudoti synchronized arba ReentrantLock, kas blokuotų visas operacijas (skaitymą ir rašymą), kol bet kuris srautas laiko užraktą.

Naudojimo pavyzdys:

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(); // Gauti skaitymo užraktą
        try {
            // Skaityti duomenis
            return data;
        } finally {
            rwLock.readLock().unlock(); // Atlaisvinti užraktą
        }
    }

    public void writeData(String newData) {
        rwLock.writeLock().lock(); // Gauti rašymo užraktą
        try {
            // Rašyti duomenis
            this.data = newData;
        } finally {
            rwLock.writeLock().unlock(); // Atlaisvinti užraktą
        }
    }
}