原文地址:http://blog.csdn.net/weidan1121/article/details/527307
import java.util.Timer;
import java.util.TimerTask;
import java.util.Date;
/**
* @author vincent
*/
public class TimerTest {
public static void main(String[] args) {
Timer t = new Timer();
//在5秒之后执行TimerTask的任务
t.schedule(new TimerTask(){
public void run()
{System.out.println("this is task you do1");}
},5*1000);
//在Date指定的特定时刻之后执行TimerTask的任务
Date d1 = new Date(System.currentTimeMillis()+1000);
t.schedule(new TimerTask(){
public void run()
{System.out.println("this is task you do2");}
},d1);
//在Date指定的特定时刻之后,每隔1秒执行TimerTask的任务一次
Date d2 = new Date(System.currentTimeMillis()+1000);
t.schedule(new TimerTask(){
public void run()
{System.out.println("this is task you do3");}
},d2,1*1000);
//在3秒之后,每隔1秒执行TimerTask的任务一次
t.schedule(new TimerTask(){
public void run()
{System.out.println("this is task you do4");}
},3*1000,1*1000);
//在3秒之后,绝对每隔2秒执行TimerTask的任务一次
t.scheduleAtFixedRate(new TimerTask(){
public void run()
{System.out.println("this is task you do6");}
},3*1000,2*1000);
}
schedule和scheduleAtFixedRate的区别在于,如果指定开始执行的时间在当前系统运行时间之前,scheduleAtFixedRate会把已经过去的时间也作为周期执行,而schedule不会把过去的时间算上。
比如
SimpleDateFormat fTime = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date d1 = fTime.parse("2005/12/30 14:10:00");
t.scheduleAtFixedRate(new TimerTask(){
public void run()
{
System.out.println("this is task you do6");
}
},d1,3*60*1000);
间隔时间是3分钟,指定开始时间是2005/12/30 14:10:00,如果我在14:17:00分执行这个程序,那么会立刻打印3次
this is task you do6 //14:10
this is task you do6 //14:13
this is task you do6 //14:16
并且注意,下一次执行是在14:19 而不是 14:20。就是说是从指定的开始时间开始计时,而不是从执行时间开始计时。
但是上面如果用schedule方法,间隔时间是3分钟,指定开始时间是2005/12/30 14:10:00,那么在14:17:00分执行这个程序,则立即执行程序一次。并且下一次的执行时间是 14:20,而不是从14:10开始算的周期(14:19)。
}
相关推荐
本篇文章将深入探讨 `Timer` 类的两个核心方法:`schedule` 和 `scheduleAtFixedRate`,以及它们在实际开发中的应用。 首先,`schedule` 方法有两种重载形式,一种是安排一个 `TimerTask` 在特定的延迟后执行,另一...
该接口提供了两个方法,`schedule`和`scheduleAtFixedRate`,它们都能用于安排任务的执行,但具体的行为有所不同。本文将深入探讨这两个方法的异同。 1. **schedule方法** `schedule`方法用于一次性延迟执行任务,...
Java 中 Timer 的 schedule 和 scheduleAtFixedRate 方法区别详解 Java 中的 Timer 类提供了两个常用的方法:schedule 和 scheduleAtFixedRate,用于安排和执行定时任务。虽然这两个方法看起来很相似,但是它们之间...
Timer类有两种执行任务的模式:schedule和scheduleAtFixedRate。schedule模式可以在某个时间或固定的时间延迟后执行任务,而scheduleAtFixedRate模式可以让任务在固定的频率下运行。 schedule模式的使用方法如下所...
3. ScheduledThreadPool:支持定时和周期性执行任务,适用于计划任务,如示例所示,可以使用schedule和scheduleAtFixedRate方法来安排任务。 二、ThreadLocal ThreadLocal是Java提供的一种线程局部变量,每个线程...
在这个示例中,我们创建了两个 TimerTask 对象 myTask1 和 myTask2,并使用 schedule 和 scheduleAtFixedRate 方法来执行任务。myTask1 将在 1 秒后执行,每隔 2 秒执行一次,而 myTask2 将在 2 秒后开始执行,每隔 ...
我们创建了两个MyTask对象,并使用schedule和scheduleAtFixedRate方法来执行这两个任务。在这个例子中,我们使用while循环来等待用户输入,并将用户输入的信息用于控制定时器的行为。 Java定时器机制提供了一种灵活...
通过`ScheduledExecutorService`,你可以使用`schedule()`, `scheduleAtFixedRate()`, 和 `scheduleWithFixedDelay()` 方法来安排一次性任务和周期性任务,并且这些任务会在单独的工作线程中执行,互不影响。...
`ScheduledExecutorService`提供了一组用于延迟执行或定期执行任务的方法,如`schedule()`, `scheduleAtFixedRate()`, 和 `scheduleWithFixedDelay()`。`ScheduledThreadPoolExecutor`是实现`...
在本案例中,我们关注的是一个名为"schedule"的项目,它似乎使用了org.tiling.scheduling.*这一命名空间下的类和方法。下面将深入探讨定时器框架的相关知识点。 1. **定时器的概念** 定时器是编程中的一个概念,...
3. **调度任务**:使用`schedule()`或`scheduleAtFixedRate()`方法来安排任务执行。`schedule()`方法用于单次执行,而`scheduleAtFixedRate()`则用于定期执行。例如,如果你想要每天的凌晨1点执行任务,可以这样设置...
需要注意的是,schedule 方法和 scheduleAtFixedRate 方法的区别。在 schedule 方法中,如果指定的开始执行时间在当前系统运行时间之前,schedule 方法不会把过去的时间算上。例如,在上面的代码中,我们使用 ...
在主程序中,我们可以通过Timer的schedule()或scheduleAtFixedRate()方法来安排任务执行: ```java Timer timer = new Timer(); timer.schedule(new FileStatusChecker(fileName), initialDelay, period); ``` ...
`Timer`类提供了`schedule()`和`scheduleAtFixedRate()`等方法,用于安排任务的执行。`schedule()`方法用于单次或重复执行任务,而`scheduleAtFixedRate()`则确保任务按固定的频率执行,即使上一次执行超时也会立即...
值得注意的是,scheduleAtFixedRate和schedule方法的区别在于,前者保证了固定的执行间隔,而后者保证了固定的延迟时间,这在处理可能出现的执行延迟时会有不同表现。 接下来,ScheduledExecutorService是Java并...
`Timer`类提供了`schedule`和`scheduleAtFixedRate`这两个主要的方法来安排任务。 1. `schedule(TimerTask task, long delay)`:此方法会在延迟`delay`毫秒后执行指定的`TimerTask`。 2. `scheduleAtFixedRate...
1. `schedule(Runnable command, long delay, TimeUnit unit)`: 这个方法会在指定的延迟后执行一次给定的任务。延迟时间由`delay`参数和`TimeUnit`参数共同决定,例如可以设置为10秒、1分钟等。 2. `...
- **安排任务**: 使用`Timer`的`schedule()`或`scheduleAtFixedRate()`方法安排任务的执行。 - **控制任务**: 可以随时调用`TimerTask`的`cancel()`方法取消任务,或者使用`Timer`的`cancel()`方法取消整个`Timer`...
创建一个`Timer`对象后,我们可以通过调用其`schedule()`或`scheduleAtFixedRate()`方法来安排任务执行。 `TimerTask`是代表要定时执行的任务的抽象类,你需要创建它的子类并覆盖`run()`方法,定义任务的具体行为。...