Назад к вопросам
СБЕР
Т-Банк
Aston
Middle — Middle+
55
Каким образом можно реализовать механизм пессимистической блокировки для обеспечения целостности данных в многопоточной среде?
Компании, где спрашивали
Prooftech
Ответ от нейросети
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();
}
}
}
Таким образом, пока один поток держит блокировку, другие потоки ждут, что предотвращает одновременное изменение данных и обеспечивает их целостность.