Назад к вопросам
Junior — Middle
65
Можешь привести пример ситуации в Java, когда используется пессимистическая блокировка для предотвращения конфликтов при доступе к данным?
Ответ от нейросети
sobes.tech AI
Пессимистическая блокировка в Java часто используется, когда нужно гарантировать, что данные не будут изменены другими потоками во время выполнения критической операции. Например, при работе с базой данных через JPA/Hibernate можно использовать метод lock() с типом блокировки PESSIMISTIC_WRITE для предотвращения одновременного изменения одной и той же записи:
EntityManager em = ...;
EntityTransaction tx = em.getTransaction();
tx.begin();
// Получаем объект с блокировкой на запись
MyEntity entity = em.find(MyEntity.class, id, LockModeType.PESSIMISTIC_WRITE);
// Выполняем изменения
entity.setValue(newValue);
// Сохраняем изменения
em.persist(entity);
tx.commit();
В этом примере, пока транзакция не завершится, другие транзакции, пытающиеся получить блокировку на эту же запись, будут ждать, что предотвращает конфликты и обеспечивает целостность данных.