У меня есть программа, которая порождает потоки (~ 5-150), которые выполняют кучу задач. Первоначально я использовал FixedThreadPool
потому что этот похожий вопрос предполагал, что они лучше подходят для задач с более длительным сроком службы, и с моим очень ограниченным знанием многопоточности я считал средний срок службы потоков (несколько минут) "долгоживущим".
Однако недавно я добавил возможность порождать дополнительные потоки, и это приводит к тому, что я превышаю установленный предел количества потоков. В этом случае было бы лучше угадать и увеличить число потоков, которые я могу разрешить, или переключиться на CachedThreadPool
чтобы у меня не было потраченных впустую потоков?
Испытывая их оба предварительно, кажется, нет никакой разницы, поэтому я склонен использовать CachedThreadPool
только для того, чтобы избежать потерь. Однако означает ли срок службы потоков, что я должен вместо этого выбрать FixedThreadPool
и просто иметь дело с неиспользованными потоками? Этот вопрос создает впечатление, что эти лишние темы не пропали даром, но я был бы признателен за разъяснения.