Sobes.tech
Middle

Wat is de essentie van het gebruik van ReadWriteLock?

sobes.tech AI

Antwoord van AI

ReadWriteLock stelt meerdere threads in staat om gelijktijdig een gedeelde bron te lezen, maar slechts één thread tegelijk in te schrijven. Dit verbetert de prestaties in scenario's waar lezen vaker voorkomt dan schrijven.

Belangrijkste componenten:

  • Read Lock: Kan gelijktijdig door meerdere threads worden vastgehouden.
  • Write Lock: Kan slechts door één thread worden vastgehouden. Blokkeert zowel andere schrijvers als lezers.

Een vergelijkbaar gedrag zonder ReadWriteLock zou het gebruik van synchronized of ReentrantLock vereisen, wat alle operaties (lezen en schrijven) zou blokkeren terwijl een thread de lock vasthoudt.

Voorbeeld van gebruik:

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(); // Vergrendel voor lezen
        try {
            // Lees data
            return data;
        } finally {
            rwLock.readLock().unlock(); // Ontgrendel voor lezen
        }
    }

    public void writeData(String newData) {
        rwLock.writeLock().lock(); // Vergrendel voor schrijven
        try {
            // Schrijf data
            this.data = newData;
        } finally {
            rwLock.writeLock().unlock(); // Ontgrendel voor schrijven
        }
    }
}