강의 메모 - Executor #
개요 #
- 자바 Executor Framework 는 자바의 java.util.concurrent 패키지에 포함된 스레드 관리와 병렬 처리를 위한 고급 기능들을 제공하는 포괄적인 라이브러리이다
- Executor Framework 는 복잡한 스레드 생성, 관리, 동기화 등의 작업을 단순화하고 성능을 향상시키기 위한 다양한 클래스와 인터페이스를 제공하고 있다
Executor Framework #
Executor #
- Executor Framework 의 핵심 인터페이스로서 단일 메서드 execute(Runnable command)를 정의하고 있으며 작업을 제출하면 Executor 구현체가 적절한 스레드를 생성하고 작업을 실행한다
ExecutorService #
- Executor 의 확장 버전으로서 작업의 제출과 스레드 풀의 종료를 관리하기 위한 메서드들을 추가로 제공한다
ScheduledExecutorService #
- ExecutorService 의 확장으로 특정 시간 또는 주기적으로 작업을 실행할 수 있도록 스케줄링하는 메서드들을 제공한다
Executor 구현체 #
- Executor 의 구현체로는 ThreadPoolExecutor,ScheduledThreadPoolExecutor 등이 있다
- 이들은 스레드 풀의 생성, 관리, 작업 큐, 스레드 생성 및 삭제 정책 등을 다양한 설정으로 제어할 수 있는 강력한 도구이다
Executor #
제출(Submit)된 Runnable 작업을 실행(Execute) 하는 객체 Executor 인터페이스는 각 작업의 실행(실행방법, 스레드 사용, 스케줄링 등의 세부 사항) 과 작업의 제출을 분리하는 방법을 제공한다.
- 단 하나의 execute() 메서드를 가지고 있으며 주어진 명령을 미래의 어떤 시점에 실행한다
- Runnable 명령은 Executor 구현 방식에 따라 새 스레드, 풀 스레드 또는 호출 스레드에서 실행 될 수 있다
작업 제출 & 작업 실행 #
- 직접 스레드를 생성하고 작업을 실행하는 것이 아니라 작업을 제출하면 스레드 생성과 작업 실행은 Executor 에서 처리하도록 하는 것이 더 유연하고 좋은 설계이다
더 필요한 기능 #
ExecutorService #
Executor 를 확장한 인터페이스로서 작업 제출과 실행에 더해 작업의 상태 추적 작업 결과 반환 작업 취소 등 다양한 작업 관리 기능을 제공한다
ExecutorService #
- ExecutorService 는 종료를 관리하는 메서드와 하나 이상의 비동기 작업 진행 상황을 추적하는 데 사용할 수 있는 Future 를 생성할 수 있는 메서드를 제공하는 Executor 입니다.
- ExecutorService 는 작업 제출부터 작업 실행, 작업 완료, 스레드 풀 종료, 자원 회수까지의 과정을 포함하는 라이프 사이클을 가지고 있다