我有一个需求,需要处理一些当前正在播放的直播节目的任务。这是一个定时任务,每分钟运行一次。
在任何一个给定的分钟内,可能会有任意数量的直播节目(虽然数量不会很大,最多约为10个)。 所有直播节目需要完成20多项功能。或者说,有20个工作类,所有类都在进行他们的工作。
例如,对于第一个功能,有5个直播节目,然后几分钟后,直播节目减少到2个,然后几分钟后,又增加到7个。
目前我正在做如下操作:
int totalShowsCount = getCurrentShowsCount();
ExecutorService executor = Executors.newFixedThreadPool(showIds.size());
以上语句每分钟执行一次。
问题陈述
1.) 上述操作有多昂贵?每分钟创建一个fixedThreadPool。
2.) 我该如何优化我的解决方案?我应该使用一个固定的线程池,比如(10),在任何给定的时间可能会使用3或5或6或任意数量的线程。
我可以在工作人员级别创建一个固定的线程池,并维护它并利用它。
顺便提一下,如果有更好的方法可用,使用Java8。
ExecutorService
?难道不可能在启动时实例化它一次并在每次重用它时重复使用吗? - SpottedExecutors.newCachedThreadPool
)? - apangin