Middle
275
V čem spočívá podstata použití ReadWriteLock?
Odpověď od AI
sobes.tech AI
ReadWriteLock umožňuje více vláknům současně číst sdílený zdroj, ale pouze jedno vlákno může současně zapisovat. To zvyšuje výkon v scénářích, kde je čtení častější než zápis.
Hlavní komponenty:
- Read Lock: Může být držen více vlákny současně.
- Write Lock: Může být držen pouze jedním vláknem. Blokuje ostatní čtenáře i zapisovatele.
Podobné chování bez ReadWriteLock by vyžadovalo použití synchronized nebo ReentrantLock, což by blokovalo všechny operace (čtení i zápis) během držení zámku jakýmkoli vláknem.
Příklad použití:
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(); // Získání zámku pro čtení
try {
// Čtení dat
return data;
} finally {
rwLock.readLock().unlock(); // Uvolnění zámku pro čtení
}
}
public void writeData(String newData) {
rwLock.writeLock().lock(); // Získání zámku pro zápis
try {
// Zápis dat
this.data = newData;
} finally {
rwLock.writeLock().unlock(); // Uvolnění zámku pro zápis
}
}
}