Java · Avançado · Inglês · Técnico
ForkJoinPool
Pool de threads com roubo de trabalho, feito para tarefas que se dividem em subtarefas. É a base dos parallel streams e do CompletableFuture padrão.
Onde usar
Aparece em RecursiveTask e em problemas de starvation quando tarefas bloqueantes ocupam o pool comum.
Em código
var pool = new ForkJoinPool(4);
long r = pool.submit(() ->
LongStream.range(0, 1000).parallel().sum()
).get();
System.out.println(r); // 499500Exemplos
The common ForkJoinPool is shared by the whole JVM.
O ForkJoinPool comum é compartilhado pela JVM inteira.
Idle workers steal tasks from busy ones.
Workers ociosos roubam tarefas dos ocupados.
Cuidado
Não use o pool comum para tarefas que bloqueiam em I/O; ele tem poucas threads, em geral o número de núcleos menos um.