Я вызываю внешний API с 10 потоками в fixedThreadPool. Теперь я хочу динамически уменьшить это количество потоков, поскольку хост API не способен обрабатывать эти многочисленные запросы в 10 потоках. Я хочу уменьшить количество потоков до 5. И я хочу сделать это без перезапуска приложения, т. Е. Я хочу динамически изменять размер пула потоков фиксированного размера. Я могу вызвать setCorePoolSize (int) и setMaximumPoolSize (int) в моем ThreadPoolExecutor. Тем не менее, javadoc говорит:Динамически меняет размер Threadpool
Устанавливает число ядер в цепочке. Это переопределяет любое значение, заданное в конструкторе. Если новое значение меньше текущего значения, избыточные существующие потоки будут прекращены, когда они станут свободными. Если больше, новые потоки при необходимости будут запущены для выполнения любых задач в очереди.
Так что, когда они говорят: «избыточные существующие потоки будут прекращены, когда они рядом неактивны», когда избыточные существующие потоки будут неактивны? Если моя очередь задач всегда заполнена, могут ли эти лишние существующие потоки простаивать?
Маловероятно, что это действительно важно, есть ли у вас пять или десять потоков. Это не имеет значения, даже на моей почти 30-летней Amiga500. Если вы хотите ограничить доступ к ограниченному ресурсу, вы пытаетесь использовать неправильный инструмент для работы. Посмотрите на семафор или подобное ... – Holger