Преимущества использования ForkJoinPool по сравнению с обычными потоками:
- Эффективное использование ядер процессора. 1 Фреймворк ForkJoinPool позволяет как можно больше нагружать рабочие потоки и блокировать их только тогда, когда нет доступных для выполнения подзадач. 1
- Принцип WorkStealing («кража работы»). 5 Когда один из потоков ForkJoinPool заканчивает свою работу, он берёт из общей очереди работ новую задачу. 5 Это продолжается до тех пор, пока задачи не кончатся. 5
- Возможность использовать задачи, которые рекурсивно повторяются. 2 Это позволяет применять механизм WorkStealing. 2
- Возможность создавать собственные «делимые» задачи. 1 Для этого нужно расширить класс ForkJoinTask. 1
Однако стоит учитывать, что задачи, исполняющиеся в рамках ForkJoinPool, обязаны быть достаточно короткими. 2