[JAVA] Fork join Pool (java Concurrency 툴)
by mini_minFork join Pool
java7 부터 사용 가능한 java Concurrency 툴이다.
동일한 작업을 여러개의 Sub Task 로 분리(Fork) 하여 각각 처리하고, 이를 최종적으로 합쳐서 (Join) 결과를 만들어낸다.
- 하나의 작업 큐를 가지고, Fork Join Pool 에서 관리하는 여러 스레드에서 접근하여 작업들을 처리한다.
- 각 스레드들은 부모 큐에서 가져간 작업들을 내부 큐에 담아 관리한다.
- 스레드들은 서로의 큐에 접근하여 작업들을 가져가 처리한다. (스레드들은 스레드 끼리 값(메모리) 를 공유할 수 있다.)
= 쉽게 말해, 작업을 쪼개고! 다시 합칠 Pool 하나를 만들어두고 작업하는 것이다.
이로써, 최대한 노는 스레드가 없도록 하기 위한 알고리즘이다.
모든 스레드가 일을 종료하는 시점은 아주 비슷해진다.
처음 스레드가 자신의 로컬 큐에 1차 분할을 하고, 다음 스레드가 처음 스레드의 일을 가져와서 한다. 그리고 그를 또 분할하고 다다음 스레드가 또 다시 일을 가져와서 한다.
✨ 하나의 스레드가 엄청 오래 걸리고, 나머지 3개의 스레드는 금방 끝나는 경우, ForkJoinPool 이 굉장히 좋다.
ForkJoinPool 인터페이스로는 리턴이 없는 RecursiveAction 과 리턴이 있는 RecursiveTask 가 있다.
(이 부분은 추후 다시 공부하도록 하자.)
'Java' 카테고리의 다른 글
[JAVA] 정적 팩토리 메서드 란? (static factory method) (0) | 2023.09.05 |
---|---|
[JSP] 천원 단위 표시 콤마 DecimalFormat (0) | 2022.09.28 |
[JAVA] 자바 - 람다식 (Lambda) / Consumer<T>, Supplier<T> (0) | 2022.09.05 |
[JAVA] 자바 - InetAddress 클래스 / URL 클래스 (0) | 2022.09.05 |
[JAVA] 자바 - 컴퓨터 네트워크 (프로토콜, 포트, IP) (0) | 2022.09.05 |
블로그의 정보
개발자 미니민의 개발로그
mini_min