Встречается на собеседованиях • сегодня
Что нужно учитывать при использовании пессимистичных блокировок
Пессимистичные блокировки (pessimistic locking) предполагают, что конфликты при доступе к данным вероятны, поэтому ресурс блокируется заранее. Основные моменты:
-
Производительность – блокировка снижает параллелизм, что может стать узким местом в высоконагруженных системах.
-
Deadlocks – возможны взаимоблокировки, если транзакции блокируют ресурсы в разном порядке. Нужно соблюдать единый порядок блокировок.
-
Таймауты – важно задавать разумные таймауты, чтобы избежать зависаний при долгих блокировках.
-
Уровни изоляции – обычно используется
SERIALIZABLEилиREPEATABLE_READ.
Пример с JPA:
java
EntityManager em = ...;
EntityTransaction tx = em.getTransaction();
tx.begin();
// Блокируем сущность для изменения
Product product = em.find(Product.class, 1L, LockModeType.PESSIMISTIC_WRITE);
product.setStock(product.getStock() - 1);
tx.commit(); // Блокировка снимаетсяЛучше использовать для коротких операций с высокой конкуренцией, где оптимистичные блокировки приводят к частым откатам.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы