Um thread pool é um conjunto fixo de threads de trabalho reutilizáveis que puxam tarefas de uma fila de trabalho compartilhada. Ele evita o custo de criar uma thread por tarefa e limita o número de threads concorrentes.
Por que usar um
Criar e destruir threads é caro (alocação de stack, configuração de agendamento do SO), e a criação ilimitada de threads esgota a memória e causa thrashing de troca de contexto. Um pool amortiza o custo de criação e limita a concorrência.
tasks → [ work queue ] → worker 1
worker 2 (N fixed workers pull & run)
worker 3
