invokeAll과 CompletableFuture는 결과 조합의 모양이 다르다

작업 목록 전체를 기다리는 경우와 단계별 변환·복구를 연결하는 경우를 구분합니다.

invokeAll

목록 일괄 제출·입력 순 Future

CompletionService

완료 순 수집

CompletableFuture

단계 조합·예외 복구

핵심: 블로킹 I/O를 공용 풀에 묵시적으로 보내지 말고 실행기를 명시합니다.