ReadWriteLock - это интерфейс в Java, который предоставляет механизм блокировки для чтения и записи данных. Он позволяет оптимизировать доступ к общим данным в случаях, когда доступ на чтение является более частым, чем доступ на запись.
ReadWriteLock имеет два основных метода: readLock() и writeLock().
Метод readLock() возвращает экземпляр Lock, который используется для блокировки доступа на чтение к данным. Множество потоков может одновременно получить доступ на чтение, если другой поток не блокирует доступ на запись.
Метод writeLock() возвращает экземпляр Lock, который используется для блокировки доступа на запись к данным. Только один поток может удерживать блокировку на запись, и при этом все остальные потоки будут заблокированы в ожидании окончания записи.
Пример использования ReadWriteLock:
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
public class Example {
private final ReadWriteLock lock = new ReentrantReadWriteLock();
private int data;
public void readData() {
lock.readLock().lock();
try {
// Чтение данных из переменной data
} finally {
lock.readLock().unlock();
}
}
public void writeData() {
lock.writeLock().lock();
try {
// Запись данных в переменную data
} finally {
lock.writeLock().unlock();
}
}
}
В этом примере ReadWriteLock используется для синхронизации доступа к переменной data. Метод readData() блокирует доступ на чтение, позволяя нескольким потокам одновременно читать данные. Метод writeData() блокирует доступ на запись, позволяя только одному потоку выполнять запись данных.
Использование ReadWriteLock может улучшить производительность в приложениях, где доступ на чтение является доминирующей операцией, и конкурентный доступ на запись редкость.
1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions
Tелеграмм канал: https://t.me/DEBAGanov
Мое резюме: https://github.com/DEBAGanov