У меня есть список фьючерсов.
List<Future> futures = new ArrayList<Future>();
futures.add(task1());
futures.add(task2());
Есть ли разница между этими двумя подходами к получению результатов?
// Option 1
for (Future future : futures) {
results.add(future.get());
}
// Option 2
boolean incompleteFound;
do {
incompleteFound = false;
for (Future future : futures) {
if (!future.isDone()) {
incompleteFound = true;
}
}
} while (incompleteFound);
for (Future future : futures) {
results.add(future.get());
}
Я бы предположил, что в Option 1
, пока вызов get
блокируется, это не повлияет на обработку фьючерсов в фоновом режиме. Я прав в этом предположении?