Executor 프레임워크는 thread 풀을 관리하여 수동으로 thread를 생성하는 대신 작업을 제출하게 하고, **CompletableFuture**는 비동기 연산을 선언적으로 조합합니다. 이들이 함께 Java에서 동시/비동기 작업을 하는 현대적 방법입니다 — 원시 thread 관리의 비용과 복잡성을 피합니다.
원시 thread 의 문제
(Task t : tasks) {
(() -> process(t)).start();
}
