A ThreadPoolExecutor
экземпляр управляет потоками: он отвечает за сопоставление задач в своей очереди с заданным количеством потоков.
Учитывая, что потоки являются общими ресурсами, интуитивно они должны управляться «одним» менеджер "на приложение.
Однако, существуют" лучшие практики ", которые говорят вам создать несколько исполнителей для некоторого сценария. Например, существуют убеждения, что вам следует создать двух отдельных исполнителей, одного для задач, связанных с процессором, и другого для блокировки задач ввода-вывода.
Почему это так?
Интуитивно, с несколькими «менеджерами» управление одним и тем же набором потоков без знания о существовании друг друга звучит для меня как анти-паттерн.
Знает ли JVM о существовании нескольких исполнителей и осуществляет дополнительное управление, чтобы они никогда не боролись за та же тема?