Sobes.tech
Back to questions
Middle — Middle+
54

Каким образом можно реализовать механизм пессимистической блокировки для обеспечения целостности данных в многопоточной среде?

Companies where asked
Prooftech
СБЕРСБЕР
Т-БанкТ-Банк
AstonAston

Answer from AI

sobes.tech AI

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

В Java это можно реализовать с помощью синхронизации или классов из java.util.concurrent.locks.

Пример с использованием ReentrantLock:

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

public class SharedResource {
    private final Lock lock = new ReentrantLock();
    private int data;

    public void updateData(int value) {
        lock.lock(); // блокируем ресурс
        try {
            // критическая секция
            data = value;
            // дополнительные операции
        } finally {
            lock.unlock(); // снимаем блокировку
        }
    }

    public int readData() {
        lock.lock();
        try {
            return data;
        } finally {
            lock.unlock();
        }
    }
}

Таким образом, пока один поток держит блокировку, другие потоки ждут, что предотвращает одновременное изменение данных и обеспечивает их целостность.