기존 스레드의 문제점

  1. 스레드 생성 시간으로 인한 성능 문제
  2. 스레드 관리 문제
  3. Runnable 인터페이스의 불편함

지금까지 설명한 1번, 2번 문제를 해결하려면 스레드를 생성하고 관리하는 풀(Pool)이 필요하다.

Executor

자바의 Executor 프레임워크는 멀티스레딩 및 병렬 처리를 쉽게 사용할 수 있도록 돕는 기능의 모음이다

이 프레임워크는 작업 실행의 관리 및 스레드 풀 관리를 효율적으로 처리해서 개발자가 직접 스레드를 생성하고 관리하는 복잡함을줄여준다.

참고로 ExecutorService 인터페이스는 getPoolSize() , getActiveCount() 같은 자세한 기능은 제공하 지 않는다. 이 기능은 ExecutorService 의 대표 구현체인 ThreadPoolExecutor 를 사용해야 한다.

es.execute(new RunnableTask("taskA")) 를 호출하면, RunnableTask("taskA") 인스턴스 가 BlockingQueue 에 보관된다.

ThreadPoolExecutor 생성자