Tenho um programa que gera threads (~ 5-150) que realizam várias tarefas. Originalmente, usei um FixedThreadPool
porque essa pergunta semelhante sugeria que eles eram mais adequados para tarefas de longa duração e, com meu conhecimento muito limitado de multithreading, considerei a vida média dos threads (vários minutos) de " vida longa ".
No entanto, recentemente adicionei a capacidade de gerar threads adicionais e isso me leva acima do limite de threads que defini. Nesse caso, seria melhor adivinhar e aumentar o número de encadeamentos que posso permitir ou alternar para um CachedThreadPool
para que não tenha encadeamentos desperdiçados?
Experimentando os dois preliminarmente, não parece haver diferença, então estou inclinado a ir com o CachedThreadPool
apenas para evitar o desperdício. No entanto, a vida útil dos fios significa que, em vez disso, devo escolher um FixedThreadPool
e apenas lidar com os fios não utilizados? Esta pergunta faz parecer que esses tópicos extras não foram desperdiçados, mas agradeceria o esclarecimento.