Sobes.tech
Middle

Koja je suština korišćenja ReadWriteLock?

sobes.tech АИ

Одговор од АИ

ReadWriteLock омогућава више потеза да истовремено читају заједнички ресурс, али само један потез може истовремено писати у њега. Ово побољшава перформансе у сценаријима где је читање чешће од писања.

Главне компоненте:

  • Read Lock: Може бити задржан од стране више потеза истовремено.
  • Write Lock: Може бити задржан само од једног потеза. Блокира друге писце и читаоце.

Слично понашање без ReadWriteLock захтевало би коришћење synchronized или ReentrantLock, што би блокирало све операције (читање и писање) током држања закључка од стране било ког потеза.

Пример употребе:

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(); // Оствари закључак за читање
        try {
            // Читање података
            return data;
        } finally {
            rwLock.readLock().unlock(); // Ослобађање закључка за читање
        }
    }

    public void writeData(String newData) {
        rwLock.writeLock().lock(); // Оствари закључак за писање
        try {
            // Писање података
            this.data = newData;
        } finally {
            rwLock.writeLock().unlock(); // Ослобађање закључка за писање
        }
    }
}