Sobes.tech
Назад к вопросам
Junior — Middle
65

Имели ли вы опыт использования ReentrantLock для управления потоками?

Ответ от нейросети

sobes.tech AI

Да, опыт использования ReentrantLock есть. Это класс из java.util.concurrent.locks, который предоставляет более гибкий механизм блокировок по сравнению с synchronized.

Особенности ReentrantLock:

  • Позволяет явно захватывать и освобождать блокировку.
  • Поддерживает повторный вход (один поток может захватить блокировку несколько раз).
  • Можно пытаться захватить блокировку с таймаутом или без блокировки.

Пример использования:

import java.util.concurrent.locks.ReentrantLock;

public class Counter {
    private final ReentrantLock lock = new ReentrantLock();
    private int count = 0;

    public void increment() {
        lock.lock();
        try {
            count++;
        } finally {
            lock.unlock();
        }
    }

    public int getCount() {
        return count;
    }
}

Такой подход помогает избежать проблем с конкурентным доступом к ресурсам в многопоточной среде.