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