加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 使用ScheduledExecutorService的多个任务

发布时间:2020-12-15 02:31:30 所属栏目:Java 来源:网络整理
导读:我目前有一个类列表,每个类启动一个这样的调度程序: private ScheduledFuture? myTask;private ScheduledExecutorService scheduler;public startScheduler() {scheduler = Executors.newScheduledThreadPool( 1 ); myTask = scheduler.scheduleAtFixedRate
我目前有一个类列表,每个类启动一个这样的调度程序:

private ScheduledFuture<?> myTask;
private ScheduledExecutorService scheduler;

public startScheduler() {
scheduler = Executors.newScheduledThreadPool( 1 );
    myTask = scheduler.scheduleAtFixedRate(new Runnable() {
          // doing work here
     },delay,interval,TimeUnit.MILLISECONDS );
}

所以每个类基本上都启动它自己的调度程序,只有一个任务.但正如我现在所理解的,调度程序可以并行执行和运行更多任务.任务(或我当前的程序中的调度程序)具有不同的延迟和间隔值,并且启动的调度程序的数量对我来说是未知的(因为用户可以启动新的并停止运行的调度程序).所有调度程序并行运行.那么我应该更改我的代码才能只使用一个调度程序吗?我应该更喜欢“CachedThreadPool”吗?

解决方法

是的,您只能使用一个池来安排所有任务.此外,如果您需要按照当前的时间间隔安排任务,则应该坚持使用newScheduledThreadPool,因为newCachedThreadPool仅返回ExecutorService接口而不返回ScheduledExecutorService.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读