我有一个需求,我需要处理当前的现场演出一些任务。 这是一个计划任务,每分钟运行一次。Executors.newFixedThreadPool() - 这个操作有多昂贵
在一分钟之内,可以有任意数量的现场表演(虽然数量不能说大,约最多10)。 所有现场演出需要完成超过20项功能。或者说有20个工人班,那里都有工作。
让我们来说说第一个功能,有5个节目,然后几分钟后显示减少到2,然后几分钟后再显示增加到7。
目前,我做这样的事情,
int totalShowsCount = getCurrentShowsCount();
ExecutorService executor = Executors.newFixedThreadPool(showIds.size());
上述语句被执行的每一分钟。
问题陈述
1)上面的操作多少昂贵是..?。在每个给定的分钟创建fixedThreadPool。
2.)我可以做什么来优化我的解决方案,我应该使用固定线程池,例如(10),也许3或5或6或任何数量的线程在任何给定的时间使用。
我可以在工作人员级别创建一个固定线程池,并维护它并使用该线程池: 。
仅供参考,使用Java8,如果有更好的方法可用。
你为什么每分钟都重新创建一个新的'ExecutorService'?是不是可以实施一次(在启动时)并且每次重复使用它? – Spotted
@斑点我有20名工人,每个工人都有自己的工作,我想为所有工人创造独立的泳池 - 我应该..?如果我为所有工人创建共用池,可能是我工作人员消耗更多线程的情况,所有工人都会每分钟启动一次,可能会出现这样一种情况,即我的一名工人没有任何线程。 –
为什么不使用单个可调整大小的池('Executors.newCachedThreadPool')? – apangin