java.util.concurrent 패키지의 핵심 인터페이스.
💡 현재는 더 확장된 인터페이스인
ExecutorService를 주로 사용한다.
Executor (interface)
│
└─ ExecutorService (interface)
│
├─ ThreadPoolExecutor (class)
├─ ScheduledThreadPoolExecutor (class)
└─ ForkJoinPool (class)
[Java] 동반클래스(Companion class)란?
인터페이스가 스태틱 메서드를 가질 수 없던 시절 자주 사용하던 자바의 패턴인 동반클래스.
Executor의 동반 클래스는 Executors임. Executor의 스태틱 팩토리 메서드 역할을 한다.
public class Executors {
// ExecutorService(Executor의 확장) 생성 메서드들
public static ExecutorService newFixedThreadPool(int nThreads) { ... }
public static ExecutorService newCachedThreadPool() { ... }
public static ExecutorService newSingleThreadExecutor() { ... }
public static ExecutorService newVirtualThreadPerTaskExecutor() { ... }
// 기타 유틸리티 메서드들
public static Callable<Object> callable(Runnable task) { ... }
// ...
}
그냥 `Executor` 는 쓰레드에 작업을 제출하면 해당 작업을 통제할 수가 없다. 이걸 통제하려면 `ExecutorService` + `Future` 의 조합이 필요함.