Отправьте обе функции в 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 сам не прерывает уже выполняющиеся задачи.