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는 리턴값이 없기때문에 콜백이 필요 없음/ 모든 비동기 동작을 완료하면 끝내면 됨
'공부 스걱스걱 > 웹' 카테고리의 다른 글
[Docker] Docker 설치 + MariaDB 실행하기 (0) | 2024.04.09 |
---|---|
[번역] Vue.js: Options API vs Composition API (0) | 2023.08.28 |
[Spring Security] 스프링 세큐리티 오류 정리 (0) | 2021.11.10 |
[Spring Security] 스프링 세큐리티 설정(spring boot 없이) (0) | 2021.11.10 |
[웹프로그래밍] Spring MVC 기본 설정 (0) | 2021.04.16 |