Future와 CompletableFuture의 차이점은?ExecutorService.submit()을 사용해 비동기 작업 실행get() 호출 시 결과를 기다리며 블로킹됨try-catch 방식으로 처리해야 함supplyAsync()를 통해 비동기 작업 실행thenApply(), thenCompose(), allOf() 등을 이용해 콜백 체이닝과 병렬 작업 조합 가능exceptionally()를 이용한 비동기적인 예외 처리 가능여러 작업을 동시에 실행하고, 특정 작업이 완료될 때까지 기다리지 않도록 설계된 프로그래밍 방식입니다.
자원 활용 효율성
동기 방식보다 CPU와 시스템 자원을 더욱 효율적으로 사용할 수 있어, 빠른 응답성을 유지할 수 있습니다.
블로킹 문제 해결
예를 들어, I/O 작업(파일 읽기, 네트워크 요청 등)이 진행 중일 때도 다른 작업을 병행할 수 있어, 전체 프로그램의 효율성이 증가합니다.
간결한 코드로 비동기 처리 가능
전통적인 멀티스레드 방식보다 코드가 간결하면서도 유지보수가 쉬운 방식으로 비동기 작업을 처리할 수 있습니다.
CompletableFuture에서 thenApply()와 thenCompose()의 차이점은?CompletableFuture에서 후속 작업(Chaining) 을 연결하는 메서드입니다.int → String, JSON 변환 등CompletableFuture 를 반환