Java定时任务调度之Timer

本人小白一个,今天开始写博客,算是一个笔记吧。以后翻起来也许会有用,无论是对于谁来说。

 

定时任务就是给定一个时间点、时间间隔或给定一个执行次数然后去自动执行的任务。

 

了解到两个类,一个Timer,一个Quartz,其中Timer是jdk提供的能实现大多数简单任务调度的类。

 

Timer:有且仅有一个后台线程对多个业务线程进行定时定频率的调度。

 

其中的方法有:schedule(task,time)

                         task:被预定的任务,需继承TimerTask。time一个时间点,Date类型。表示当时间等于或早于现在的时间执行task一次。早于当前时间的话会立即执行。

                        schedule(task,time,period)

                         task:被预定的任务,需继承TimerTask。time一个时间点,Date类型。period,long整型。每隔period毫秒执行一次task,时间等于或超过timer时首次执行task。

                        schedule(task,delay)

                         task:被预定的任务,需继承TimerTask。delay,long整型。表示距离当前时间delay毫秒后执行一次task。

                         schedule(task,delay,period)

                         task:被预定的任务,需继承TimerTask。delay,long整型。period,long整型。表示在当前时间delay毫秒后开始执行task,而且之后每隔period毫秒执行一次。

                         cancel();表示取消所有任务。

                         timer.purge():移除取消的任务,返回取消的任务数量

                         scheduleAtFixedRate()方法基本与上述schedule方法一致。区别在于两点:

                        (1)当task执行时间超过预定的周期时间period,schedule方法顺序执行,意思当task执行完再执行下一次。而scheduleAtFixedRate方法以period为标准执行,与task并行,有一定的并发性。

                        (2)当执行时间早于当前时间时:schedule在当前时间开始执行而scheduleAtFixedRate方法按照执行时间开始执行只不过会尽快执行数次赶上当前时间继续正常执行。

下面给出实例代码:

public class MyTimer {
public static void main(String[] args) {
	
	Timer timer = new Timer();
	//当前时间两秒后开始每一秒执行一次MyTimerTask里的run()方法
	timer.schedule(new MyTimerTask("huhuhu"), 2000L, 1000L);
	//timer.cancel();//取消所有任务
	timer.purge();//移除取消的任务,返回取消的任务数量
	long a = new MyTimerTask("huhuhu").scheduledExecutionTime();
	System.out.println(a);
	
}
	
}
 
public class MyTimerTask extends TimerTask{ String name; public MyTimerTask(String inputName){ this.name = inputName; } @Override public void run() { System.out.println(this.scheduledExecutionTime());//返回距离最近安排执行的时间 System.out.println("当前名称:"+this.name); try { Thread.sleep(2000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } cancel();//此任务的取消。timer中cancel()方法表示取消所有任务 } public String getName() { return name; } public void setName(String name) { this.name = name; } }

 

 

最近在整理一些资源工具,放在网站分享 http://tools.maqway.com
欢迎关注公众号:麻雀唯伊 , 不定时更新资源文章,生活优惠,或许有你想看的

 

 

 

 

 

 

                      

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值