Представьте себе сценарий, в котором задачу можно разделить на подзадачи, каждая из которых выполняет какой-то длительный процесс. Предполагая, что эта тяжелая задача возникает только в 5/100 запросов, отправленных на сервер. Было бы разумно использовать ForkJoinPool для этих 5% задач? Каковы недостатки разделения небольшой задачи на более мелкие подзадачи и использования ForkJoinPool для выполнения указанной небольшой задачи?
Предположим, что я не могу решить, разделить или не разделить задачу, поэтому я разделяю все задачи по умолчанию и запускаю ForkJoinPool.
Недавно я прочитал это в javadocs,
ForkJoinTasks should perform relatively small amounts of computation. Large tasks should be split into smaller subtasks, usually via recursive
decomposition. As a very rough rule of thumb, a task should perform more than 100 and less than 10000 basic computational steps, and should avoid indefinite looping. If tasks are too big, then parallelism cannot improve throughput. If too small, then memory and internal task maintenance overhead may overwhelm processing.