ReentrantReadWriteLock, если у тебя частые чтения и мало записей.ReentrantReadWriteLock это утилита конкурентности в Java, которая дает два типа локов:1. Read lock (лок на чтение): позволяет нескольким потокам читать одновременно, пока ни один поток не пишет.
2. Write lock (лок на запись): позволяет писать только одному потоку и блокирует всех остальных читателей и писателей, пока лок не будет освобожден.
Используй
ReentrantReadWriteLock, когда:1. Твой код часто читает разделяемые данные.
2. Записи происходят редко.
3. Ты хочешь выжать максимум параллелизма: разрешить нескольким читателям работать одновременно, но гарантировать, что запись идет строго эксклюзивно.
Пример:
public class SharedValue {
private final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
private int value = 0;
public int readValue() {
lock.readLock().lock();
try {
return value;
} finally {
lock.readLock().unlock();
}
}
public void writeValue(int newValue) {
lock.writeLock().lock();
try {
value = newValue;
} finally {
lock.writeLock().unlock();
}
}
}👉 Java Portal