我有一个定时任务,由带有 startAtFixedInterval 的计时器启动,间隔很长。定时任务的工作是检查网站上的更改。
我想允许用户在间隔中间手动重新启动任务,以便在不等待间隔结束的情况下获得新的结果。我看不到任何 reset() 方法,所以我想我必须停止并重新启动任务,对吗?或者实际上有一种方法/最佳选择?
我有一个定时任务,由带有 startAtFixedInterval 的计时器启动,间隔很长。定时任务的工作是检查网站上的更改。
我想允许用户在间隔中间手动重新启动任务,以便在不等待间隔结束的情况下获得新的结果。我看不到任何 reset() 方法,所以我想我必须停止并重新启动任务,对吗?或者实际上有一种方法/最佳选择?
在java.util.Timer类中有cancel()
方法。它取消当前的定时器任务。当当前定时器任务被取消时,启动一个新的。
您可以使用ScheduledExecutorService
public static void main(String[] args) throws InterruptedException {
Runnable command = new Runnable() {
@Override
public void run() {
System.out.println("I am done..");
}
};
ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
executorService.scheduleAtFixedRate(command, 1000, 1000, TimeUnit.MILLISECONDS);
}