Встречается на собеседованиях • сегодня
Какие знаешь способы блокировки потока
1. **Thread.sleep()** – приостанавливает поток на указанное время.
```java
Thread.sleep(1000); // 1 секунда
```
2. **Object.wait()** – поток освобождает монитор и ждёт, пока другой поток вызовет `notify()`/`notifyAll()`.
```java
synchronized (lock) {
lock.wait();
}
```
3. **BlockingQueue.take()/put()** – поток блокируется, если очередь пуста/полна.
```java
BlockingQueue queue = new LinkedBlockingQueue<>();
queue.take(); // блокировка, если очередь пуста
```
4. **CountDownLatch.await()** – поток ждёт, пока счётчик не станет нулём.
```java
CountDownLatch latch = new CountDownLatch(1);
latch.await(); // блокировка
```
5. **CyclicBarrier.await()** – поток ждёт, пока все потоки не достигнут барьера.
6. **Semaphore.acquire()** – блокировка, если нет доступных пермитов.
7. **Future.get()** – блокировка до завершения асинхронной задачи.
8. **Lock.lock()** – блокировка с использованием `ReentrantLock`.
9. **join()** – ожидание завершения другого потока.
```java
thread.join();
```
Каждый способ имеет свои особенности и применяется в разных сценариях.

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