Встречается на собеседованиях • сегодня
Как можно избежать пессимистическую блокировку в Java
В Java можно избежать пессимистической блокировки, используя оптимистичные стратегии:
1. **Atomic-классы** (AtomicInteger, AtomicReference) — для простых операций:
```java
AtomicInteger counter = new AtomicInteger(0);
counter.incrementAndGet();
```
2. **Оптимистичная блокировка** через `StampedLock`:
```java
StampedLock lock = new StampedLock();
long stamp = lock.tryOptimisticRead();
// Чтение данных
if (!lock.validate(stamp)) {
stamp = lock.readLock(); // Переход на пессимистичный режим
}
```
3. **CAS-операции** (Compare-And-Swap):
```java
AtomicReference ref = new AtomicReference<>("old");
ref.compareAndSet("old", "new");
```
4. **Версионирование** (как в Hibernate/JPA):
```java
@Entity
public class Entity {
@Version
private int version; // Автоматически проверяется при обновлении
}
```
Ключевое преимущество — отсутствие блокировок при чтении, но возможны конфликты при записи, которые нужно обрабатывать (повторные попытки/откаты).

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