JavaでCompletableFuture.supplyAsync()メソッドを使用して非同期処理を行う
CompletableFuture.supplyAsync()メソッドは、引数として渡された処理(ラムダ式やメソッド参照など)を非同期で実行します。
複数の非同期処理をListにaddして、Stream APIを使用して並列に実行します。
Arrays.asList(page1,page2,page3).stream().map(CompletableFuture::join).toList();
Sample.java
import java.util.Arrays;
import java.util.concurrent.CompletableFuture;
public class Sample {
public static void main(String[] args) throws InterruptedException {
long startTime = System.currentTimeMillis();
CompletableFuture<CompletableFuture> page1 = CompletableFuture.supplyAsync(() -> sleep("5"));
CompletableFuture<CompletableFuture> page2 = CompletableFuture.supplyAsync(() -> sleep("3"));
CompletableFuture<CompletableFuture> page3 = CompletableFuture.supplyAsync(() -> sleep("4"));
Arrays.asList(page1,page2,page3).stream().map(CompletableFuture::join).toList();
long endTime = System.currentTimeMillis();
System.out.println("処理時間:" + (endTime - startTime) + " ms");
}
public static CompletableFuture sleep(String seconds) {
try {
Thread.sleep(Long.valueOf(seconds) * 1000L);
} catch (Exception e) {}
return CompletableFuture.completedFuture(seconds + "秒かかる処理");
}
}
実行結果です。
処理時間:5042 ms

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES20xx),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^

