Можете объяснить концепцию блокировок с пессимистичным подходом и в чем её суть?
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().