1.3Kпросмотров
24.4%от подписчиков
3 марта 2026 г.
Score: 1.5K
❓ Вопрос с собеса Чем ReentrantLock отличается от synchronized в Java? Пример🔽
import java.util.concurrent.locks.ReentrantLock; public class Main { private static final ReentrantLock lock = new ReentrantLock(); private static int counter = 0; public static void main(String[] args) { Runnable task = () -> { lock.lock(); try { counter++; } finally { lock.unlock(); } }; new Thread(task).start(); new Thread(task).start(); }
} Ответ🔽
ReentrantLock — это класс из java.util.concurrent.locks, который предоставляет больше возможностей, чем synchronized: — Можно пытаться захватить блокировку с таймаутом (tryLock)
— Можно использовать блокировку с несколькими условиями (Condition)
— Можно вручную управлять моментом захвата и освобождения 📌 В отличие от synchronized, ReentrantLock требует явного вызова lock() и unlock(), что даёт гибкость, но требует дисциплины. ➡️ Easy Java | #Собес