1. Spring TaskExecutor 소개
- Spring의 TaskExecutor는 Java의 스레드 풀(thread pool)을 추상화한 인터페이스입니다.
- "executor"라는 이름은 실제 구현이 반드시 스레드 풀일 필요는 없다는 사실에서 유래했습니다.
- executor는 단일 스레드로 동작하거나 심지어 동기적으로 실행될 수도 있습니다.
- Spring의 추상화는 Java SE와 Jakarta EE 환경 간의 구현 세부 사항을 숨겨줍니다.
1.1 TaskExecutor 인터페이스
- Spring의 TaskExecutor 인터페이스는 java.util.concurrent.Executor 인터페이스와 동일합니다.
- 원래 이 인터페이스가 만들어진 주요 이유는 Java 5 이전 버전에서도 스레드 풀을 사용할 수 있도록 추상화하기 위함이었습니다.
- 이 인터페이스는 단일 메서드(execute(Runnable task))만 가지며, 스레드 풀의 시맨틱과 구성에 따라 실행할 태스크를 받습니다.
1.2 TaskExecutor의 용도
- TaskExecutor는 원래 다른 Spring 컴포넌트에게 스레드 풀 추상화를 제공하기 위해 만들어졌습니다.
- ApplicationEventMulticaster, JMS의 AbstractMessageListenerContainer, Quartz 통합 등의 컴포넌트가 스레드 풀링을 위해 이 추상화를 사용합니다.
- 개발자의 빈에서도 스레드 풀링 동작이 필요한 경우 이 추상화를 활용할 수 있습니다.
2. TaskExecutor 구현체 종류
- Spring은 여러 가지 TaskExecutor 구현체를 제공합니다.
- 대부분의 경우 직접 구현체를 만들 필요가 없습니다.
- Spring이 제공하는 주요 구현체는 다음과 같습니다:
2.1 SyncTaskExecutor