Middle — Middle+
89
¿Cómo se puede implementar un mecanismo de bloqueo pesimista para garantizar la integridad de los datos en un entorno multihilo?
Empresas donde se preguntó
Prooftech
Respuesta de la IA
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();
}
}
}
Таким образом, пока один поток держит блокировку, другие потоки ждут, что предотвращает одновременное изменение данных и обеспечивает их целостность.