Назад к вопросам
Junior — Middle
56
Какими способами можно организовать механизм ожидания ответа в программных системах?
Компании, где спрашивали
RedLab
Ответ от нейросети
sobes.tech AI
В Java существует несколько способов организовать механизм ожидания ответа:
-
Использование методов wait() и notify()/notifyAll() — классический способ синхронизации потоков через монитор объекта. Поток вызывает
wait(), чтобы приостановить выполнение до получения уведомления. -
Классы из java.util.concurrent:
- CountDownLatch — позволяет одному или нескольким потокам ждать, пока не завершится определённое количество операций.
- CyclicBarrier — позволяет группе потоков ждать друг друга.
- Future и CompletableFuture — позволяют асинхронно получать результат и ожидать его завершения.
-
Метод join() — поток вызывает
join()на другом потоке, чтобы дождаться его завершения. -
Синхронизация через блокировки (Lock, Condition) — более гибкий способ управления ожиданием и уведомлением.
Пример с CompletableFuture:
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
// Долгая операция
return "Результат";
});
// Ожидание результата
String result = future.get();
System.out.println(result);