Middle — Middle+
81
Come si può implementare un meccanismo di blocco pessimista per garantire l'integrità dei dati in un ambiente multithread?
Le aziende dove è stato chiesto
Prooftech
Risposta dell'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();
}
}
}
Таким образом, пока один поток держит блокировку, другие потоки ждут, что предотвращает одновременное изменение данных и обеспечивает их целостность.