JavaTimer使用疑惑

今天工作需要用到java的定时器,于是做了个例子,发现一个不是很明白的问题,不知道这是不是正常情况:
timer的几个schedule方法执行时,如果时间设为已过时间,几个方法中指定时间的也都会执行。尤其是指定时间重复执行的方法,指定时间已过,但还会执行。

例子代码如下:

package timer;

import java.util.Calendar;
import java.text.ParseException;
import java.util.Timer;
import java.util.Date;

public class TestTimer {

public static void testTimer()
{
Timer timer = new Timer();
Calendar c = Calendar.getInstance();
c.add(Calendar.MINUTE, -1);//将时间设为已过时间
Date date = c.getTime();
System.out.println(date.toLocaleString());

timer.schedule(new TestTimerTask("安排在指定的时间执行指定的任务11"), date);
timer.schedule(new TestTimerTask("安排在指定延迟后执行指定的任务22"), 60*1000l);

timer.schedule(new TestTimerTask("安排指定的任务在指定的时间开始进行重复的固定延迟执行33"), date, 60*1000l);
timer.schedule(new TestTimerTask("安排指定的任务从指定的延迟后开始进行重复的固定延迟执行44"), 60*1000l, 60*1000l);

timer.scheduleAtFixedRate(new TestTimerTask("安排指定的任务在指定的时间开始进行重复的固定速率执行55"), date, 120*1000l);
timer.scheduleAtFixedRate(new TestTimerTask("安排指定的任务在指定的延迟后开始进行重复的固定速率执行66"), 60*1000l, 120*1000l);
}
public static void main(String[] args)
{
testTimer();
}
}

package timer;

import java.util.TimerTask;

public class TestTimerTask extends TimerTask{

private String msg ;

public TestTimerTask(String msg)
{
this.msg = msg;
}
public void run()
{
System.out.println("--->>"+msg);
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值