Ho un programma che genera thread (~ 5-150) che eseguono una serie di attività. Inizialmente, ho usato un FixedThreadPoolperché questa domanda simile suggeriva che fossero più adatti per attività più longeve e con la mia conoscenza molto limitata del multithreading, consideravo la vita media dei thread (diversi minuti) "di lunga durata ".
Tuttavia, di recente ho aggiunto la possibilità di generare thread aggiuntivi e così facendo mi porta al di sopra del limite di thread che ho impostato. In questo caso, sarebbe meglio indovinare e aumentare il numero di thread che posso consentire o passare a un fileCachedThreadPool modo da non avere thread sprecati?
Provandoli entrambi preliminarmente, non sembra esserci differenza, quindi sono propenso ad andare con il CachedThreadPoolsolo per evitare gli sprechi. Tuttavia, la durata dei thread significa che dovrei invece scegliere FixedThreadPoole occuparmi solo dei thread inutilizzati? Questa domanda fa sembrare che quei thread extra non siano sprecati, ma apprezzerei il chiarimento.