Sobes.tech
Back to questions
Junior — Middle
66

Можешь привести пример ситуации в Java, когда используется пессимистическая блокировка для предотвращения конфликтов при доступе к данным?

Answer from AI

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();

В этом примере, пока транзакция не завершится, другие транзакции, пытающиеся получить блокировку на эту же запись, будут ждать, что предотвращает конфликты и обеспечивает целостность данных.