원하는대로

관심분야에 대해 원하는 모든 것을 발행하는 곳

미정 자세히보기

공부 스걱스걱/웹

[JAVA] CompletableFuture를 이용한 비동기화

ohsoou 2023. 1. 2. 17:13
List<CompletableFuture<Void>> futures = list().stream()
                                        .map(cont -> CompletableFuture
                                        			.runAsync(() -> [task])
                                        ).collect(Collectors.toList());
                                        
CompletableFuture.allOf(futures.toArray(new CompletableFuture[futures.size()])).join();
CompletableFuture.supplyAsync(Supplier): 리턴값이 있는 비동기 작업
CompletableFuture.runAsync(Runnable): 리턴값이 없는 비동기 작업
CompletableFuture.allOf(CompletableFuture<>...): 여러 작업들을 동시에 실행하고, 모든 작업 결과에 콜백을 실행함

CompletableFuture.join(): 호출해서 모든 동작이 끝나기를 기다린다

 
Q. 콜백을 따로 하지 않는데 왜 allOf를 쓰는지
cuz. runAsync는 리턴값이 없기때문에 콜백이 필요 없음/ 모든 비동기 동작을 완료하면 끝내면 됨