Назад к вопросам
Junior — Middle
61
Объясните принцип работы механизмов чтения и записи с использованием ReadWriteLock.
Ответ от нейросети
sobes.tech AI
ReadWriteLock — это интерфейс в Java, который позволяет разделять доступ к ресурсу между несколькими потоками, оптимизируя работу с операциями чтения и записи.
Принцип работы:
- Несколько потоков могут одновременно захватывать read lock (блокировку для чтения), если нет активного писателя.
- Только один поток может захватить write lock (блокировку для записи), и при этом никакие другие потоки не могут читать или писать.
Это повышает производительность в сценариях, где операций чтения гораздо больше, чем записи, так как чтение не блокирует друг друга.
Пример использования:
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
public class SharedData {
private final ReadWriteLock rwLock = new ReentrantReadWriteLock();
private int data;
public int read() {
rwLock.readLock().lock();
try {
return data;
} finally {
rwLock.readLock().unlock();
}
}
public void write(int value) {
rwLock.writeLock().lock();
try {
data = value;
} finally {
rwLock.writeLock().unlock();
}
}
}