Встречается на собеседованиях • сегодня

Какие знаешь способы упорядочить работу потоков

В Java есть несколько способов управления порядком выполнения потоков:

  1. 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();
  1. Synchronized блоки - обеспечивают взаимное исключение:
java
synchronized(lockObject) {
    // критическая секция
}
  1. Lock/Condition из java.util.concurrent:
java
Lock lock = new ReentrantLock();
Condition condition = lock.newCondition();

lock.lock();
try {
    condition.await(); // или condition.signal()
} finally {
    lock.unlock();
}
  1. CountDownLatch/CyclicBarrier - для координации между потоками:
java
CountDownLatch latch = new CountDownLatch(2);
// в потоках:
latch.countDown();
// в основном потоке:
latch.await();
  1. Semaphore - ограничивает количество потоков, имеющих доступ к ресурсу:
java
Semaphore sem = new Semaphore(3);
sem.acquire();
// работа с ресурсом
sem.release();

Выбор метода зависит от конкретной задачи: синхронизация доступа, координация выполнения или ограничение параллелизма.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы