80] 스레드보다는 실행자, 태스크, 스트림을 애용하라

과거에는 간단한 예시용 단순한 작업 큐(work queue)를 작성해도 많은 코드를 작성해야 했다. 안전 실패나 응답 불가가 될 여지를 없애는 코드를 추가해야 했기 때문이기도 한데, 다행히도 더 이상은 이런 코드를 작성하지 않아도 된다.

- 생성자와 태스크(task; 작업)

java.util.concurrent 패키지가 등장했다. 이 패키지의 실행자 프레임워크(Executor Framework)는 인터페이스 기반의 유연한 태스크 실행 기능을 담고 있다. 그래서 예전의 방대한 코드보다 모든 면에서 뛰어난 작업 큐를 다음의 단 한 줄로 생성할 수 있게 되었다.

ExecutorService exec = Executors.newSingleThreadExecutor();

다음은 이 실행자에 실행할 태스크를 넘기는 방법이다.

exec.execute(runnable);

그리고 다음은 실행자를 우아하게 종료시키는 방법이다.(이 작업이 실패하면 VM 자체가 종료되지 않는다.)

exec.shutdown();

실행자 서비스의 기능은 이외에도 많다.

- 실행자 서비스의 주요 기능들