Middle
Koja je suština korišćenja ReadWriteLock?
sobes.tech АИ
Одговор од АИ
ReadWriteLock омогућава више потеза да истовремено читају заједнички ресурс, али само један потез може истовремено писати у њега. Ово побољшава перформансе у сценаријима где је читање чешће од писања.
Главне компоненте:
- Read Lock: Може бити задржан од стране више потеза истовремено.
- Write Lock: Може бити задржан само од једног потеза. Блокира друге писце и читаоце.
Слично понашање без ReadWriteLock захтевало би коришћење synchronized или ReentrantLock, што би блокирало све операције (читање и писање) током држања закључка од стране било ког потеза.
Пример употребе:
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(); // Оствари закључак за читање
try {
// Читање података
return data;
} finally {
rwLock.readLock().unlock(); // Ослобађање закључка за читање
}
}
public void writeData(String newData) {
rwLock.writeLock().lock(); // Оствари закључак за писање
try {
// Писање података
this.data = newData;
} finally {
rwLock.writeLock().unlock(); // Ослобађање закључка за писање
}
}
}