问题描述
我有一个线程池执行程序的列表,每个线程的大小为50,我希望当某些执行程序的队列中没有任何待处理的作业,或者运行的任务少于池大小时,他们可以从另一个执行程序队列中执行任务的执行者有更多任务并执行。
因此,我创建了另一个线程,该线程在某个时间间隔内运行以下方法并轮班工作,但运行不正常。 问题
-
@H_502_5@即使我给定条件,添加的任务也比它们的池大小更多,而小于池的大小却相等,但是我不知道为什么要转移更多的任务。
@H_502_5@假设pool1的任务较少,因此从pool1中的其他任务中添加了任务,然后又以某种方式再次将pool1放回到另一个循环迭代中的其他池中,这在许多池中都无法正常进行。
还有其他方法可以做到吗?我认为我做的方法不是很好的方法,而且效果也不好。
请提出一种解决方法。
public void shiftTaskInIdleThreadPool() {
for(ThreadPoolExecutor executor : threadPoolExecutorsList){
if(executor.getCorePoolSize() > executor.getActiveCount()){
for (ThreadPoolExecutor executor1 : threadPoolExecutorList){
while(executor1.getQueue().size() > 0 && executor.getActiveCount() < executor.getCorePoolSize()){
executor.execute(executor1.getQueue().remove());
}
}
}
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)