ExpertiDict

Java · Avançado · Inglês · Técnico

ForkJoinPool

/fɔrk dʒɔɪn puːl/substantivo

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); // 499500

Exemplos

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.

Veja também

Todos os termos de Java