지금까지 설명한 1번, 2번 문제를 해결하려면 스레드를 생성하고 관리하는 풀(Pool)이 필요하다.
자바의 Executor 프레임워크는 멀티스레딩 및 병렬 처리를 쉽게 사용할 수 있도록 돕는 기능의 모음이다
이 프레임워크는 작업 실행의 관리 및 스레드 풀 관리를 효율적으로 처리해서 개발자가 직접 스레드를 생성하고 관리하는 복잡함을줄여준다.
참고로 ExecutorService 인터페이스는 getPoolSize() , getActiveCount() 같은 자세한 기능은 제공하 지 않는다. 이 기능은 ExecutorService 의 대표 구현체인 ThreadPoolExecutor 를 사용해야 한다.
es.execute(new RunnableTask("taskA")) 를 호출하면, RunnableTask("taskA") 인스턴스 가 BlockingQueue 에 보관된다.
ThreadPoolExecutor 생성자