Sobes.tech
Back to questions
Junior — Middle
65

Можете объяснить концепцию блокировок с пессимистичным подходом и в чем её суть?

Companies where asked
One To Work
СБЕРСБЕР

Answer from AI

sobes.tech AI

Пессимистичная блокировка — это подход к управлению конкурентным доступом к данным, при котором ресурс блокируется сразу при попытке его изменения или чтения, чтобы предотвратить конфликты и несогласованность данных. Суть в том, что система предполагает возможность конфликтов и заранее блокирует данные, не давая другим транзакциям их изменять или читать до снятия блокировки.

В Java это часто реализуется с помощью синхронизации (synchronized), ReentrantLock или других механизмов блокировок. Например, если несколько потоков пытаются изменить один и тот же объект, пессимистичная блокировка гарантирует, что только один поток сможет это сделать в данный момент, а остальные будут ждать.

Пример с ReentrantLock:

import java.util.concurrent.locks.ReentrantLock;

public class Counter {
    private int count = 0;
    private final ReentrantLock lock = new ReentrantLock();

    public void increment() {
        lock.lock();
        try {
            count++;
        } finally {
            lock.unlock();
        }
    }

    public int getCount() {
        return count;
    }
}

Здесь lock.lock() блокирует доступ к ресурсу, пока текущий поток не завершит работу с ним и не вызовет lock.unlock().