Встречается на собеседованиях • сегодня
Какие знаешь способы упорядочить работу потоков
В Java есть несколько способов управления порядком выполнения потоков:
- join() - позволяет дождаться завершения потока:
java
Thread t1 = new Thread(() -> System.out.println("Thread 1"));
Thread t2 = new Thread(() -> System.out.println("Thread 2"));
t1.start();
t1.join(); // ждем завершения t1
t2.start();- Synchronized блоки - обеспечивают взаимное исключение:
java
synchronized(lockObject) {
// критическая секция
}- Lock/Condition из java.util.concurrent:
java
Lock lock = new ReentrantLock();
Condition condition = lock.newCondition();
lock.lock();
try {
condition.await(); // или condition.signal()
} finally {
lock.unlock();
}- CountDownLatch/CyclicBarrier - для координации между потоками:
java
CountDownLatch latch = new CountDownLatch(2);
// в потоках:
latch.countDown();
// в основном потоке:
latch.await();- Semaphore - ограничивает количество потоков, имеющих доступ к ресурсу:
java
Semaphore sem = new Semaphore(3);
sem.acquire();
// работа с ресурсом
sem.release();Выбор метода зависит от конкретной задачи: синхронизация доступа, координация выполнения или ограничение параллелизма.

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