У меня есть цикл for, который я пытаюсь распараллелить, используя CompletableFuture.
for (int i = 0; i < 10000; i++) {
doSomething();
doSomethingElse();
}
Что у меня есть до сих пор:
for (int i = 0; i < 10000; i++) {
CompletableFuture.runAsync(() -> doSomething());
CompletableFuture.runAsync(() -> doSomethingElse());
}
Полагаю, это служит цели, но существует требование распечатать журнал непосредственно перед началом и окончанием всей обработки. Если я сделаю это:
log("Started doing things");
for (int i = 0; i < 10000; i++) {
CompletableFuture.runAsync(() -> doSomething());
CompletableFuture.runAsync(() -> doSomethingElse());
}
log("Ended doing things");
Гарантирует ли это, что второй оператор журнала будет напечатан, когда закончится весь цикл for, поскольку он выполняется в отдельном потоке? Если нет, есть ли способ сделать это без блокировки основного потока?