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