Sobes.tech
Back to questions
Junior — Middle
55

Какими способами можно организовать механизм ожидания ответа в программных системах?

Companies where asked
RedLab

Answer from AI

sobes.tech AI

В Java существует несколько способов организовать механизм ожидания ответа:

  1. Использование методов wait() и notify()/notifyAll() — классический способ синхронизации потоков через монитор объекта. Поток вызывает wait(), чтобы приостановить выполнение до получения уведомления.

  2. Классы из java.util.concurrent:

    • CountDownLatch — позволяет одному или нескольким потокам ждать, пока не завершится определённое количество операций.
    • CyclicBarrier — позволяет группе потоков ждать друг друга.
    • Future и CompletableFuture — позволяют асинхронно получать результат и ожидать его завершения.
  3. Метод join() — поток вызывает join() на другом потоке, чтобы дождаться его завершения.

  4. Синхронизация через блокировки (Lock, Condition) — более гибкий способ управления ожиданием и уведомлением.

Пример с CompletableFuture:

CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
    // Долгая операция
    return "Результат";
});

// Ожидание результата
String result = future.get();
System.out.println(result);