В моей практике нередко программное обеспечение, которое я разрабатываю, становится большим и сложным, и различные его части используют исполнителей по-своему.С точки зрения производительности было бы лучше использовать разные конфигурации пула потоков в каждой части.Но с точки зрения удобства обслуживания и удобства использования кода было бы более предпочтительно, если бы все объекты, связанные с потоками, параллелизмом и использованием ЦП, были сохранены и настроены в каком-то централизованном месте.
Наличие каждого класса, которому требуется некоторое параллельное выполнение или планирование, создает свой собственный пул потоков - это не хорошо, потому что трудно контролировать их жизненные циклы и общее количество потоков.
Создание какого-то вида ExecutorManager и передача одного пула потоков вокруг приложения также не годится, потому что, в зависимости от типа задачи и скорости отправки, неправильно настроенная комбинация рабочей очереди и размера пула потоков может очень сильно повредить производительности.
Итак, вопрос в том, существуют ли какие-то общие подходы к решению этой проблемы?