Я ищу есть ThreadPoolExecutor
, где я могу установить corePoolSize
и maximumPoolSize
, и что происходит, так это то, что очередь немедленно передает задачу в пул потоков и, таким образом, создает новые потоки пока он не достигнет maximumPoolSize
, затем начните добавлять в очередь.
Есть ли такая вещь? Если нет, то есть ли веская причина, по которой у него нет такой стратегии?
По сути, я хочу, чтобы задачи были отправлены на выполнение, и когда они достигают точки, в которой они по существу получат «худшую» производительность из-за слишком большого количества потоков (путем установки maxPoolSize), он перестанет добавлять новые потоки и работать с этим пулом потоков и начинать очередь, а затем, если очередь заполнена, она отклоняется.
А когда нагрузка снова падает, он может начать демонтировать неиспользуемые потоки обратно в corePoolSize.
Это имеет для меня больше смысла в моем приложении, чем «три общие стратегии», перечисленные в http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ThreadPoolExecutor. html