【发布时间】:2016-03-07 06:21:04
【问题描述】:
我有一个要求,我需要为当前的现场表演处理一些任务。 这是一个计划任务,每分钟运行一次。
在任何给定的分钟内,都可以有任意数量的现场表演(虽然数量不可能那么大,最多大约 10 个)。 所有直播节目需要完成 20 多项功能。或者说那里有 20 个工人阶级,所有人都在那里工作。
假设第一个功能,有 5 个节目,几分钟后节目减少到 2 个,几分钟后又增加到 7 个。
目前我正在做这样的事情,
int totalShowsCount = getCurrentShowsCount();
ExecutorService executor = Executors.newFixedThreadPool(showIds.size());
上述语句每分钟执行一次。
问题陈述
1.) 上述操作要花多少钱..??。在每一分钟创建固定线程池。
2.) 我可以做些什么来优化我的解决方案,我应该使用固定的线程池,比如 (10),并且可能在任何给定的分钟内使用 3 或 5 或 6 个或任意数量的线程。
我可以在工作人员级别创建一个固定线程池,并对其进行维护吗? 利用它。
仅供参考,使用 Java8,如果有更好的方法可用。
【问题讨论】:
-
你为什么每分钟都重新创建一个新的
ExecutorService?难道不能实例化一次(在启动时)并每次都重用它吗? -
@Spotted 我有 20 名工人,每个工人都有自己的工作,我想为所有工人创建单独的池 - 我应该..??如果我为所有工作人员创建公共池,可能是我工作人员消耗更多线程的情况,所有工作人员将每分钟启动一次,可能存在我的一个工作人员没有任何线程的情况。
-
为什么不使用单个可调整大小的池 (
Executors.newCachedThreadPool)?
标签: java performance executorservice