schedule和scheduleAtFixedRate的区别在于,如果指定开始执行的时间在当前系统运行时间之前,scheduleAtFixedRate会把已经过去的时间也作为周期执行,而schedule不会把过去的时间算上
下面是一个例子,这段代码主要目地是当一定条件成立时才去运行主程序,之前会每隔一定的时间去检查。
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class TestTask {
public static boolean flag = true;
public static Timer t = new Timer();
public static void main(String[] args) {
// scheduleAtFixedRate(TimerTask task, Date firstTime, long period);
Date d2 = new Date(System.currentTimeMillis()+1000);
t.scheduleAtFixedRate(new TimerTask(){
public void run()
{
System.out.println("this is task you do");
if(true){//这里应该做一些检查,当符合一定的条件的时候,执行下里面的两句,这里固定写成了true
TestTask.flag = false;
t.cancel();
}
}
},d2,10*1000);//每隔10秒检查一次
//下面的while循环主要是hold住主程序
while(TestTask.flag){
try {
Thread.sleep(2*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//下面是执行主程序
System.out.println("dfdfdf");
}
}
分享到:
相关推荐
`TimerSchedueAndScheduleAtFixRate2.java` 和 `TimerSchedueAndScheduleAtFixRate.java` 可能包含示例代码,演示了如何使用 `schedule` 和 `scheduleAtFixedRate` 安排任务。 在 `...
但是,当我们使用 scheduleAtFixedRate 方法时,任务的执行时间超过了预期时间,scheduleAtFixedRate 方法将会等待任务完成,然后继续执行下一个任务。 结论 schedule 方法用于安排一个任务在指定的时间执行一次,...
该接口提供了两个方法,`schedule`和`scheduleAtFixedRate`,它们都能用于安排任务的执行,但具体的行为有所不同。本文将深入探讨这两个方法的异同。 1. **schedule方法** `schedule`方法用于一次性延迟执行任务,...
本文将结合实际案例探讨如何使用Timer、TimerTask以及ScheduledFuture来实现定时任务,并着重讲解它们的退出机制。 首先,我们来看Timer和TimerTask的使用。Timer类是一个用于调度定时任务的工具,它使用单个后台...
例如,在上面的代码中,我们使用 scheduleAtFixedRate 方法来安排一个任务,在 2005/12/30 14:10:00 开始执行,每隔 3 分钟执行一次。如果我们在 14:17:00 执行这个程序,那么会立刻打印 3 次 "this is task you do6...
// 若要实现周期性任务,可以使用scheduleAtFixedRate()方法 // 参数分别为:任务,首次执行的延迟,两次执行之间的间隔 timer.scheduleAtFixedRate(task, 0, 5000); // 零延迟开始,每5秒执行一次 ``` 需要注意的...
`start()`方法使用`Timer`的`schedule()`或`scheduleAtFixedRate()`方法来安排任务。`schedule()`方法用于单次执行,而`scheduleAtFixedRate()`则用于周期性执行,确保任务按照固定的频率执行,即使上一次执行超时也...
如果你想让任务每隔一段时间重复执行,可以使用`scheduleAtFixedRate`方法: ```java timer.scheduleAtFixedRate(new MyTask(), 0, 5000); // 开始立即执行,之后每5000毫秒执行一次 ``` 在Python中,我们可以使用...
在上面的例子中,我们使用scheduleAtFixedRate方法来执行任务。在这个例子中,我们让任务在 1 秒后执行,并且每次间隔 2 秒钟。 java.util.TimerTask类 java.util.TimerTask类是Java Timer定时器的任务类,它可以...
在我们的例子中,因为要定时发送邮件,所以可能会使用到`scheduleAtFixedRate()`方法来定期执行发送邮件的任务。 创建一个定时任务,你需要定义一个实现了`java.lang.Runnable`接口的类,该类包含实际执行的任务...
这个方法和`schedule`类似,但不同之处在于它会尽力确保任务按照固定的频率执行,即使前一次执行因为各种原因(如系统延迟)超过了预定的时间间隔,`scheduleAtFixedRate`也会尝试调整后续任务的执行时间以补偿之前...
创建一个`Timer`对象后,你可以使用`schedule()`或`scheduleAtFixedRate()`方法来安排任务。`schedule()`方法用于单次延迟执行,而`scheduleAtFixedRate()`方法则用于周期性地执行任务。 下面是一个使用`Timer`类...
创建一个ScheduledExecutorService实例,然后使用`scheduleAtFixedRate`或`scheduleWithFixedDelay`方法设定任务的执行频率。 示例代码: ```java import java.util.concurrent.ScheduledExecutorService; import ...
3. 计划任务:使用 `schedule()` 或 `scheduleAtFixedRate()` 方法来安排 `TimerTask` 的执行。前者按指定延迟后首次执行,然后每次间隔指定的时间执行;后者则保证两次执行之间的间隔固定,即使上一次执行超时也...
// 如果需要周期性执行,可以使用scheduleAtFixedRate // timer.scheduleAtFixedRate(myTask, 0, 5000); // 每5秒执行一次,无初始延迟 ``` 四、源代码解析 在提供的源代码中,可能包含了一个或多个使用定时器的...
this.executorService.scheduleAtFixedRate(this::monitorProcess, 0, 1, TimeUnit.MINUTES); } private void monitorProcess() { // 这里调用上述监控方法 } public void shutdown() { executorService....
最后,我们使用`scheduleAtFixedRate()`方法设置定时器在初始延迟5秒后开始执行任务,并以5秒为周期持续执行。 然而,Java定时器有一些需要注意的地方。由于Timer和TimerTask在单个后台线程中运行,如果一个任务...
本篇文章将深入探讨Java定时器的使用方法和关键概念。 ### 1. Java定时器类介绍 Java定时器类`Timer`和`TimerTask`是配合使用的。`Timer`用于创建定时器实例并调度任务,而`TimerTask`则是一个抽象类,用于定义要...
然后,我们可以使用`schedule`或`scheduleAtFixedRate`方法来安排任务。`schedule`方法用于一次性执行任务,而`scheduleAtFixedRate`则用于按固定速率周期性执行任务。 `TimerTask`是`Timer`类的辅助类,它代表一个...