Sobes.tech
Назад к вопросам
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();
        }
    }
}