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
}
}
}