Java中长时间运行的计划执行器

Java中长时间运行的计划执行器,java,scheduled-tasks,Java,Scheduled Tasks,我开始学习Java并发特性,并在这里学习接口。我遇到了这样一个片段,它在一个小时内每10秒发出一声嘟嘟声: import static java.util.concurrent.TimeUnit.*; class BeeperControl { private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); public void beepForAnH

我开始学习Java并发特性,并在这里学习接口。我遇到了这样一个片段,它在一个小时内每10秒发出一声嘟嘟声:

import static java.util.concurrent.TimeUnit.*;
 class BeeperControl {
    private final ScheduledExecutorService scheduler =
       Executors.newScheduledThreadPool(1);

    public void beepForAnHour() {
        final Runnable beeper = new Runnable() {
                public void run() { System.out.println("beep"); }
            };
        final ScheduledFuture<?> beeperHandle =
            scheduler.scheduleAtFixedRate(beeper, 10, 10, SECONDS);
        scheduler.schedule(new Runnable() {
                public void run() { beeperHandle.cancel(true); }
            }, 60 * 60, SECONDS);
    }
 }
导入静态java.util.concurrent.TimeUnit.*;
类蜂鸣器控制{
专用最终计划执行器服务计划程序=
Executors.newScheduledThreadPool(1);
公共空间{
最终可运行蜂鸣器=新可运行(){
public void run(){System.out.println(“beep”);}
};
最终计划的未来蜂鸣器手柄=
scheduleAtFixedRate(蜂鸣器,10秒,10秒);
scheduler.schedule(新的Runnable(){
public void run(){beeperHandle.cancel(true);}
},60*60,秒);
}
}

对于像我这样的新手来说,这似乎很容易,但我的问题是,我想要一个Java程序,永远每隔10秒读取一个MySql表。计划执行者是否是此类工作的最佳选择?

若要永久运行,请取出代码以取消任务。

若要永久运行,请取出代码以取消任务。

是。为什么不呢?
ScheduledExecutorService
是您想要的,但是使用方法
scheduleAtFixedRate()
scheduleWithFixedDelay()
而不是
schedule()
只需删除最后一个计划,它将取消任务,并且将永远运行。是的。为什么不呢?
ScheduledExecutorService
是您想要的,但是使用方法
scheduleAtFixedRate()
scheduleWithFixedDelay()
而不是
schedule()
只需删除最后一个计划即可取消任务,它将永远运行。