ExecutorService와 CompletableFuture의 차이점과 역할
262
投稿した質問数 2
안녕하세요! 비동기 코드에 관해 질문이 있습니다. ExecutorService 는 스레드를 관리하는 역할을 하는것이고 CompletableFuture 가 실제로는 비동기 요청을 처리하는 것으로 이해하였는데 맞을까요?
Future 은 예외 처리를 할 수 없기 때문에 잘 쓰이기 않을까요??CompletableFuture 가 지원하는 기능이 더 많기 때문에 주로 CompletableFuture 를 사용하나요?
回答 2
1
안녕하세요! EunKyung Hwang 님
-ExecutorService는 스레드 풀을 관리하고, 비동기 작업을 수행할 스레드를 제공
-CompletableFuture는 비동기 작업을 수행하고 결과를 처리하는 API
-추가로 CompletableFuture를 사용할 때 별도의 Executor를 명시적으로 설정하지 않으면, 내부적으로 ForkJoinPool.commonPool()을 사용
CompletableFuture는 Future을 단점을 보완하여 나온것으로 Future 단점을 키워드로 찾아보는 것을 추천드립니다.!
감사합니다!
0
안녕하세요, 인프런 AI 인턴입니다. EunKyung Hwang님.
비동기 프로그래밍에서 ExecutorService와 CompletableFuture의 역할과 차이점에 대해 질문하셨군요.
ExecutorService
- 역할: Java에서
ExecutorService는 스레드 풀을 관리하는 인터페이스로, 스레드의 생성을 제어하고, 실행을 관리하며, 종료 및 기타 상태 정보를 처리합니다. 주로 스레드 생성을 제어하고, 작업을 스레드 풀 내에서 비동기적으로 실행하기 위해 사용됩니다.
- 관련 링크: ExecutorService Java Documentation
- 역할: Java에서
CompletableFuture
- 역할:
CompletableFuture는 Java 8에서 도입된 클래스로, 비동기 프로그래밍을 더 직관적이고 강력하게 수행할 수 있도록 도와줍니다.CompletableFuture는 비동기 작업을 처리하고, 작업 완료 후에 콜백 메소드(예:thenApply,thenAccept,exceptionally등)를 이어붙여 후속 작업을 처리하는 방식으로 사용할 수 있습니다.
- 장점: 비동기 작업의 결과를 기다리거나 비동기 작업이 완료된 각각의 특정 시점에 작업을 수행하고자 할 때 유용합니다. 또한, 예외 처리를 위한 메소드도 제공하여 예외 발생 시의 적절한 대응을 쉽게 할 수 있습니다.
- 관련 링크: CompletableFuture Java Documentation
- 역할:
Future와의 비교
Future는 비동기로 작업의 결과를 받을 수 있는 방법을 제공하는 기본 인터페이스이지만, 블로킹 방식으로 결과를 기다리거나 예외를 적절히 처리하는데 있어 한계가 있었습니다.
CompletableFuture는 보다 풍부한 기능 셋을 제공하여 비동기 프로그래밍 패턴을 유연하고 효율적으로 구현할 수 있으며, 이는Future에 비해 더욱 강력한 사용성을 제공합니다. 그로 인해, 많은 경우CompletableFuture가 더 선호됩니다.
이와 관련된 추가적인 질문이나 궁금한 사항이 있다면 언제든지 말씀해 주세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
비동기 스레드풀 분리 이유와 Virtual Thread 전환 시 고려사항
0
30
1
script Validate가 안됩니다.
0
56
1
thread pool
0
45
1
ngrinder 설치관련
0
129
1
캐싱 데이터가 안보입니다.
0
136
2
섹션4: Ngrinder를 통한 성능 개선 확인 에서 사용하는 예제 코드
0
212
2
현업에서의 부하테스트 및 Ngrinder 설치
0
347
2
인덱스 활용 질문
0
333
2
프로젝트 적용하는데 어려움이 있어 질문드립니다.
0
306
1
nGrinder validate가 안됩니다.
1
739
2
EhCacheManagerFactoryBean
0
406
2
인텔리제이 EditConfiguration 옵션 추가하는 방법 [ 공유O 질문X ]
2
511
2
프로젝트 공유
1
438
2
scouter client
0
387
2
스카우터 설치
0
492
2
생각보다 부하 테스트가 CPU를 많이 타는거 같은데 정상이겠죠?
0
361
1
로컬에서 성능 테스트하는 것이 어떨 때 유의미한가요?
0
957
1
nginder script작성 후 실행 후 Connection refused에러
0
749
2
scouter C드라이브 말고 다른 곳에서 실행 시 NoSuchFile 오류
0
415
2
java17환경에서 scouter 실행법 문의
1
1035
2
첫번째 회사에서 서비스 회사로 이직하실때 준비
0
378
1
ngrinder-agent 실행 문제(Unmapped relationship: 7)
0
372
1
ngrinder쪽에 스크립트 클릭시 오류
0
783
3
findNoticeByDates 실행 에러
1
247
2

