Middle
Mis on ReadWriteLock kasutamise olemus?
sobes.tech AI
Vastus AI-lt
ReadWriteLock võimaldab mitmel niidil samaaegselt lugeda jagatud ressurssi, kuid ainult üks niit saab samaaegselt kirjutada. See parandab jõudlust olukordades, kus lugemine on sagedasem kui kirjutamine.
Peamised komponendid:
- Read Lock: Võib olla hoitud mitme niidi poolt samaaegselt.
- Write Lock: Võib olla hoitud ainult ühe niidi poolt. Blokeerib teised kirjutajad ja lugejad.
Sarnane käitumine ilma ReadWriteLock-ita nõuaks synchronized või ReentrantLock kasutamist, mis blokeeriks kõik operatsioonid (lugemine ja kirjutamine), kuni üks niit hoiab lukku.
Kasutusnäide:
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(); // Võta lugemislukku
try {
// Loe andmeid
return data;
} finally {
rwLock.readLock().unlock(); // Vabasta lugemislukku
}
}
public void writeData(String newData) {
rwLock.writeLock().lock(); // Võta kirjutuslukku
try {
// Kirjuta andmeid
this.data = newData;
} finally {
rwLock.writeLock().unlock(); // Vabasta kirjutuslukku
}
}
}