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