Sobes.tech
Junior — Middle
78

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

Answer from AI

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;
    }
}

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