我正在使用固定大小(ExecutorService)的Java线程池。假设我向线程池提交了一个作业,并且该作业处于空闲状态。
是否有可能从线程池中删除空闲的作业,以便可以处理队列中的其他作业,然后稍后再次添加空闲的作业?
如果您从ExecutorService
转到ThreadPoolExecutor,则可以使用以下API来实现
public void setCorePoolSize(int corePoolSize)
设置核心线程数。这将覆盖在构造函数中设置的任何值。如果新值小于当前值,则多余的现有线程将在下次空闲时终止。
如果更大,将在需要时启动新线程以执行任何排队的任务。
如果您想在运行时调整池的大小,
((ThreadPoolExecutor)service).setCorePoolSize(newLimit);
// newLimit是池的新大小
其他API:
public void setMaximumPoolSize(int maximumPoolSize)
设置允许的最大线程数。这将覆盖在构造函数中设置的任何值。如果新值小于当前值,则多余的现有线程将在下次空闲时终止。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句