Встречается на собеседованиях • сегодня
Как потоки взаимодействуют между собой
В 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'ов при взаимодействии потоков.

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