포크/조인 프레임워크
- 자바 5에서 처음 제공된 컨커런트 API를 최종적으로 완성한것은 자바 7에서 제공한 포크/조인 프레임워크이다.
- 자바 6까지의 컨커런트 API는 스레드를 생성하는것에 초점을 맞췄다면,
자바 7에서는 스레드와의 연관성을 관리할 수 있는 기능과 함께 효율적으로 하드웨어 자원을 활용할 수 있는 방법을 제공한다.
- 포크/조인 프레임워크는
ExecutorService 인터페이스를 구현한 클래스
이다.
- 엄밀히 말하면 새로운 기능이 아니라 인터페이스의 구현체가 추가된 것으로 이해하면 된다.
- 포크/조인 프레임워크의 주된 목적은 멀티 프로세서 혹은 멀티 코어를 가지고 있는 하드웨어 자원을 최대한 효율적으로 활용해서 병렬 처리가 가능하도록 하는 것이다.
포크(Fork)와 조인(Join)
- 어떤 할 일이 있는데 그 일을 나눠서 할 수 있다면, 여러 개로 쪼개서 실행하고(포크)
최종적으로 실행이 완료된 내용을 취합(조인)해서 그 결과를 만들어 내는것.
포크(Fork)
- 다른 프로세스 혹은 스레드(태스크)를 여러 개로 쪼개서 새롭게 생성한다는 의미이다.
조인(Join)
- 포크해서 실행한 프로세스 혹은 스레드(태스크)의 결과를 취합한다는 의미이다.
포크/조인 프레임워크의 동작 정리

프로세스
- 하나의 큰 작업이 생성되면, 해당 작업을 분할할 수 있는지 판단한다.
- 분할할 수 있다면 하위 작업으로 분할한다.
- 그리고 분할할 수 있을 때까지 계속 하위 작업으로 분할한다.