Middle
273
Kuo iš esmės yra ReadWriteLock naudojimas?
Atsakymas iš AI
sobes.tech AI
ReadWriteLock leidžia keliems srautams vienu metu skaityti bendrą išteklių, tačiau tik vienas srautas gali vienu metu rašyti į jį. Tai pagerina našumą scenarijuose, kur skaitymas yra dažnesnis nei rašymas.
Pagrindiniai komponentai:
- Read Lock: Gali būti laikomas kelių srautų vienu metu.
- Write Lock: Gali būti laikomas tik vieno srauto. Blokuoja kitus rašytojus ir skaitytojus.
Panašus elgesys be ReadWriteLock reikalautų naudoti synchronized arba ReentrantLock, kas blokuotų visas operacijas (skaitymą ir rašymą), kol bet kuris srautas laiko užraktą.
Naudojimo pavyzdys:
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(); // Gauti skaitymo užraktą
try {
// Skaityti duomenis
return data;
} finally {
rwLock.readLock().unlock(); // Atlaisvinti užraktą
}
}
public void writeData(String newData) {
rwLock.writeLock().lock(); // Gauti rašymo užraktą
try {
// Rašyti duomenis
this.data = newData;
} finally {
rwLock.writeLock().unlock(); // Atlaisvinti užraktą
}
}
}