면접질문 - Future와CompletableFuture

잠자는 고양이·2025년 5월 23일
0

Java

목록 보기
70/73

💬 질문 1. FutureCompletableFuture의 차이점은?

🔹 Future

  • ExecutorService.submit()을 사용해 비동기 작업 실행
  • get() 호출 시 결과를 기다리며 블로킹됨
  • 콜백 체이닝이나 작업 병렬 조합을 지원하지 않음
  • 예외 처리는 일반적인 try-catch 방식으로 처리해야 함

🔹 CompletableFuture

  • supplyAsync()를 통해 비동기 작업 실행
  • thenApply(), thenCompose(), allOf() 등을 이용해 콜백 체이닝병렬 작업 조합 가능
  • exceptionally()를 이용한 비동기적인 예외 처리 가능

💬 질문 2. 비동기 프로그래밍이 필요한 이유는?

여러 작업을 동시에 실행하고, 특정 작업이 완료될 때까지 기다리지 않도록 설계된 프로그래밍 방식입니다.

✅ 비동기 프로그래밍의 장점

  • 자원 활용 효율성
    동기 방식보다 CPU와 시스템 자원을 더욱 효율적으로 사용할 수 있어, 빠른 응답성을 유지할 수 있습니다.

  • 블로킹 문제 해결
    예를 들어, I/O 작업(파일 읽기, 네트워크 요청 등)이 진행 중일 때도 다른 작업을 병행할 수 있어, 전체 프로그램의 효율성이 증가합니다.

  • 간결한 코드로 비동기 처리 가능
    전통적인 멀티스레드 방식보다 코드가 간결하면서도 유지보수가 쉬운 방식으로 비동기 작업을 처리할 수 있습니다.


💬 질문 3. CompletableFuture에서 thenApply()thenCompose()의 차이점은?

✅ 공통점

  • 둘 다 CompletableFuture에서 후속 작업(Chaining) 을 연결하는 메서드입니다.

🔸 thenApply()

  • 후속 작업에서 일반 값을 반환
  • 즉시 실행되는 성격
  • 주로 간단한 데이터 변환에 사용
    예: int → String, JSON 변환 등

🔸 thenCompose()

  • 후속 작업에서 또 다른 CompletableFuture 를 반환
  • 새로운 비동기 작업을 연결할 때 사용
  • 이전 결과를 기반으로 추가적인 비동기 작업을 실행할 때 적합
    예: API 응답 → DB 조회 요청 등
profile
개발자가 되고 싶은 잠자는고양이

0개의 댓글