Sobes.tech
Middle

Kāda ir ReadWriteLock izmantošanas būtība?

sobes.tech AI

Atbilde no AI

ReadWriteLock ļauj vairākām plūsmām vienlaikus lasīt koplietotu resursu, bet tikai viena plūsma vienlaikus var rakstīt tajā. Tas uzlabo veiktspēju scenārijos, kur lasīšana ir biežāka nekā rakstīšana.

Galvenās sastāvdaļas:

  • Read Lock: Var tikt turēts vairākām plūsmām vienlaikus.
  • Write Lock: Var tikt turēts tikai vienas plūsmas. Bloķē citus rakstītājus un lasītājus.

Līdzīga uzvedība bez ReadWriteLock prasītu synchronized vai ReentrantLock izmantošanu, kas bloķētu visas operācijas (lasīšanu un rakstīšanu), kamēr kāda plūsma tur aizslēgumu.

Piemērs lietošanai:

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(); // Iegūt lasīšanas aizslēgumu
        try {
            // Lasīt datus
            return data;
        } finally {
            rwLock.readLock().unlock(); // Atbrīvot lasīšanas aizslēgumu
        }
    }

    public void writeData(String newData) {
        rwLock.writeLock().lock(); // Iegūt rakstīšanas aizslēgumu
        try {
            // Rakstīt datus
            this.data = newData;
        } finally {
            rwLock.writeLock().unlock(); // Atbrīvot rakstīšanas aizslēgumu
        }
    }
}