Параллельный запуск двух функций и сбор их результатов

Отправьте обе функции в executor до ожидания результатов. Если ожидать первую сразу после submit, а вторую запускать потом, параллельного выполнения не получится.

Короткий ответ

Что ответить на собеседовании

Отправьте обе функции в executor до ожидания результатов. Если ожидать первую сразу после submit, а вторую запускать потом, параллельного выполнения не получится.

Подробный разбор

Ответ с пояснениями

Условие

Требуется запустить одновременно две функции, каждая из которых возвращает некоторое значение, и после завершения их работы получить оба результата.

Ответ

Отправьте обе функции в executor до ожидания результатов. Если ожидать первую сразу после submit, а вторую запускать потом, параллельного выполнения не получится.

Пример для Java, где first/second возвращают String, а вызывающий метод обрабатывает InterruptedException и ExecutionException:

var pool = java.util.concurrent.Executors.newFixedThreadPool(2);
try {
    var a = pool.submit(this::first);
    var b = pool.submit(this::second);
    String firstResult = a.get();
    String secondResult = b.get();
    use(firstResult, secondResult);
} finally {
    pool.shutdown();
}

Задачи могут исполняться конкурентно, но точное одновременное начало не гарантируется. Для ограниченного времени нужны общий deadline и политика отмены; shutdown сам не прерывает уже выполняющиеся задачи.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее