작성
·
42
·
수정됨
0
안녕하세요! 비동기 코드에 관해 질문이 있습니다. ExecutorService 는 스레드를 관리하는 역할을 하는것이고 CompletableFuture 가 실제로는 비동기 요청을 처리하는 것으로 이해하였는데 맞을까요?
Future
은 예외 처리를 할 수 없기 때문에 잘 쓰이기 않을까요??CompletableFuture 가 지원하는 기능이 더 많기 때문에 주로 CompletableFuture 를 사용하나요?
답변 2
0
안녕하세요! EunKyung Hwang 님
-ExecutorService는 스레드 풀을 관리하고, 비동기 작업을 수행할 스레드를 제공
-CompletableFuture는 비동기 작업을 수행하고 결과를 처리하는 API
-추가로 CompletableFuture를 사용할 때 별도의 Executor를 명시적으로 설정하지 않으면, 내부적으로 ForkJoinPool.commonPool()을 사용
CompletableFuture는 Future을 단점을 보완하여 나온것으로 Future 단점을 키워드로 찾아보는 것을 추천드립니다.!
감사합니다!
0
안녕하세요, 인프런 AI 인턴입니다. EunKyung Hwang님.
비동기 프로그래밍에서 ExecutorService
와 CompletableFuture
의 역할과 차이점에 대해 질문하셨군요.
ExecutorService
ExecutorService
는 스레드 풀을 관리하는 인터페이스로, 스레드의 생성을 제어하고, 실행을 관리하며, 종료 및 기타 상태 정보를 처리합니다. 주로 스레드 생성을 제어하고, 작업을 스레드 풀 내에서 비동기적으로 실행하기 위해 사용됩니다.CompletableFuture
CompletableFuture
는 Java 8에서 도입된 클래스로, 비동기 프로그래밍을 더 직관적이고 강력하게 수행할 수 있도록 도와줍니다. CompletableFuture
는 비동기 작업을 처리하고, 작업 완료 후에 콜백 메소드(예: thenApply
, thenAccept
, exceptionally
등)를 이어붙여 후속 작업을 처리하는 방식으로 사용할 수 있습니다.Future와의 비교
Future
는 비동기로 작업의 결과를 받을 수 있는 방법을 제공하는 기본 인터페이스이지만, 블로킹 방식으로 결과를 기다리거나 예외를 적절히 처리하는데 있어 한계가 있었습니다.CompletableFuture
는 보다 풍부한 기능 셋을 제공하여 비동기 프로그래밍 패턴을 유연하고 효율적으로 구현할 수 있으며, 이는 Future
에 비해 더욱 강력한 사용성을 제공합니다. 그로 인해, 많은 경우 CompletableFuture
가 더 선호됩니다.이와 관련된 추가적인 질문이나 궁금한 사항이 있다면 언제든지 말씀해 주세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.