Java中的长时间运行调度执行程序
问题描述:
我开始使用Java并发功能,并在此处的界面ScheduledExecutorService
处。我碰到这个片段,使蜂鸣每10秒为一小时:Java中的长时间运行调度执行程序
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程序,读取一个MySQL表每10秒永远。计划的执行者是这类工作的最佳选择吗?
答
要永久运行,请取出代码以取消任务。
是的。为什么不呢? – 2013-05-06 17:25:45
'ScheduledExecutorService'就是你想要的,但是用方法'scheduleAtFixedRate()'或'scheduleWithFixedDelay()'而不是'schedule()' – 2013-05-06 17:32:16
只需删除最后一个时间表,它将取消任务,并且它将永远运行。 – assylias 2013-05-06 17:35:25