Sobes.tech
Middle
274

Care este esența utilizării ReadWriteLock?

Răspuns de la AI

sobes.tech AI

ReadWriteLock permite mai multor fire să citească simultan o resursă partajată, dar doar unui singur fir îi este permis să scrie în același timp. Acest lucru îmbunătățește performanța în scenariile în care citirea are loc mai frecvent decât scrierea.

Componente principale:

  • Read Lock: Poate fi deținut de mai mulți fire simultan.
  • Write Lock: Poate fi deținut de un singur fir. Blochează atât alți scriitori, cât și cititori.

Un comportament similar fără ReadWriteLock ar necesita utilizarea synchronized sau ReentrantLock, ceea ce ar bloca toate operațiile (citire și scriere) în timpul deținerii blocajului de către orice fir.

Exemplu de utilizare:

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(); // Obține blocajul de citire
        try {
            // Citește datele
            return data;
        } finally {
            rwLock.readLock().unlock(); // Eliberează blocajul de citire
        }
    }

    public void writeData(String newData) {
        rwLock.writeLock().lock(); // Obține blocajul de scriere
        try {
            // Scrie datele
            this.data = newData;
        } finally {
            rwLock.writeLock().unlock(); // Eliberează blocajul de scriere
        }
    }
}