Встречается на собеседованиях • сегодня

Приведи пример пессимистической блокировки в 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();
}

Пессимистическая блокировка гарантирует эксклюзивный доступ, но может снижать производительность из-за ожидания разблокировки.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы