Multithreading 如何使用ThreadPoolExecutor减少线程池大小值?

Multithreading 如何使用ThreadPoolExecutor减少线程池大小值?,multithreading,Multithreading,我将CorePoolSize设置为10,将MaximumPoolSize设置为Integer.MAX_值 现在我将CorePoolSize增加到15,getPoolSize()显示了15个线程 在此之后,我再次将CorePoolSize降低到10,这次getPoolSize()显示为15。15个线程正在运行 我只想将threadpool中的线程数设置为CorePoolSize,不想更改MaximumPoolSize值。我也不想修改CorePoolSize 如何做到这一点?setCorePoolS

我将CorePoolSize设置为10,将MaximumPoolSize设置为Integer.MAX_值

现在我将CorePoolSize增加到15,getPoolSize()显示了15个线程

在此之后,我再次将CorePoolSize降低到10,这次getPoolSize()显示为15。15个线程正在运行

我只想将threadpool中的线程数设置为CorePoolSize,不想更改MaximumPoolSize值。我也不想修改CorePoolSize


如何做到这一点?

setCorePoolSize的文档状态:

如果新值小于当前值,则多余的现有线程将在下次空闲时终止

你的线程池总是有很多工作要做吗?如果你让它闲置,你会发现线程在那一点死亡吗?您可能需要调用
setKeepAlive
来设置非常短的保持活动时间(可能为0),至少暂时是这样

我怀疑,虽然还有更多的任务要处理,但它将保持现有线程的活力——这是有道理的,因为您基本上已经说过您对“10个或更多”线程感到满意。如果你有超过10个任务要处理,为什么它不继续处理它们呢