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

Как потоки взаимодействуют между собой

В Java потоки могут взаимодействовать через: 1. **Общие ресурсы** (с синхронизацией) - используют `synchronized`, `volatile` или атомарные классы из `java.util.concurrent.atomic` 2. **Ожидание/уведомление** - методы `wait()`, `notify()`, `notifyAll()` класса Object 3. **Блокирующие очереди** - `BlockingQueue` из `java.util.concurrent` 4. **Синхронизаторы** - `CountDownLatch`, `CyclicBarrier`, `Semaphore` и др. Пример с `synchronized`: ```java class Shared { synchronized void print(String msg) { System.out.print("[" + msg); try { Thread.sleep(1000); } catch (InterruptedException e) {} System.out.println("]"); } } ``` Пример с `BlockingQueue`: ```java BlockingQueue queue = new ArrayBlockingQueue<>(10); // Поток-производитель queue.put("Message"); // Поток-потребитель String msg = queue.take(); ``` Важно избегать race conditions и deadlock'ов при взаимодействии потоков.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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