ExecutorService2 CompletableFuture allOf/anyOf로 외부 API 병렬화 CompletableFuture allOf/anyOf로 외부 API 병렬화외부 API를 여러 개 호출할 때 CompletableFuture는 단순한 쓰레드 풀보다 표현력이 좋습니다.이 글은 allOf로 “모두 끝나면” 합치기, anyOf로 “가장 빠른 것” 받기,그리고 타임아웃/예외/취소까지 한 번에 다룹니다.준비: 전용 ExecutorExecutorService httpPool = Executors.newFixedThreadPool(64, r -> { Thread t = new Thread(r, "http-" + System.nanoTime()); t.setDaemon(true); return t;});1) allOf: 모두 끝난 뒤 결과 모으기CompletableFuture u = supp.. 2025. 9. 29. ExecutorService 스레드풀 사이즈/큐 전략 ExecutorService 스레드풀 사이즈/큐 전략스레드풀을 잘못 잡으면 지연 폭증, OOM, CPU 과다가 순식간에 옵니다. 이 글은 풀 사이징 방식과 큐 선택 전략, 거부 정책까지 한 번에 정리합니다. 실무에서 바로 쓸 수 있는 설정 코드도 함께 제공합니다.1) 스레드 수 산정 공식CPU 바운드: N_threads ≈ CPU코어 수 (또는 코어 수 + 1)I/O 바운드: N_threads ≈ 코어 수 × (1 + W/C)- W: 대기 시간(블로킹 I/O), C: 계산 시간. 예) 대기:계산=4:1이면 코어×5서비스별로 분리 풀을 권장(웹 요청, 배치, 백그라운드 등)2) 큐 선택 가이드큐는 대기 전략을 결정합니다. 상황에 따라 아래 중 하나를 고릅니다.SynchronousQueue: 대기열 없이 바.. 2025. 9. 29. 이전 1 다음