Встречается на собеседованиях • сегодня
Приведи пример пессимистической блокировки в Java
Пессимистическая блокировка предполагает, что конфликты при доступе к данным вероятны, поэтому ресурс блокируется заранее. В Java это можно реализовать через synchronized или Lock.
Пример с ReentrantLock:
java
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class Counter {
private int count = 0;
private final Lock lock = new ReentrantLock();
text
public void increment() {
lock.lock(); // Блокировка
try {
count++;
} finally {
lock.unlock(); // Всегда разблокировать в finally
}
}}
text
В JDBC можно использовать `SELECT ... FOR UPDATE`:
```java
Connection conn = dataSource.getConnection();
try {
conn.setAutoCommit(false);
PreparedStatement stmt = conn.prepareStatement(
"SELECT * FROM accounts WHERE id = ? FOR UPDATE");
stmt.setInt(1, accountId);
// Работа с заблокированной записью
conn.commit();
} finally {
conn.close();
}Пессимистическая блокировка гарантирует эксклюзивный доступ, но может снижать производительность из-за ожидания разблокировки.

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