菜鸟学堂 -【Java 定时器】


本文主要介绍TimerTask和Timer方式

一:Timer


public class Timer
   
   
    
    extends 
    
    Object
   
   

一种工具,线程用其安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行。


二:TimerTask

 

public abstract class TimerTask
   
   
    
    extends 
    
    Object
   
   
   
   
    
    implements 
    
    Runnable
   
   

由 Timer 安排为一次执行或重复执行的任务。

实现了runnable接口哦

三:

timer:调度器

timertask:计划任务

调度器安排计划任务,定期执行。


比如可以实现:

每天某时刻执行某任务,

马上间隔某时间段执行某任务。如下:

voidschedule(TimerTask task, Date time)
          安排在指定的时间执行指定的任务。
 voidschedule(TimerTask task, Date firstTime, long period)
          安排指定的任务在指定的时间开始进行重复的固定延迟执行
 voidschedule(TimerTask task, long delay)
          安排在指定延迟后执行指定的任务。
 voidschedule(TimerTask task, long delay, long period)
          安排指定的任务从指定的延迟后开始进行重复的固定延迟执行
 voidscheduleAtFixedRate(TimerTask task, Date firstTime, long period)
          安排指定的任务在指定的时间开始进行重复的固定速率执行
 voidscheduleAtFixedRate(TimerTask task, long delay, long period)
          安排指定的任务在指定的延迟后开始进行重复的固定速率执行

之前的一个PM说,不要用timer,说这个很不准确,那么看看下面,是不是这个原因:

关于固定延迟和固定速率


public void scheduleAtFixedRate(TimerTask task,
                                Date firstTime,
                                long period)
如果由于任何原因(如垃圾回收或其他后台活动)而延迟了某次执行, 则将快速连续地出现两次或更多次执行,从而使后续执行能够赶上来。

public void schedule(TimerTask task,
                     Date firstTime,
                     long period)

如果由于任何原因(如垃圾回收或其他后台活动)而延迟了某次执行,则后续执行也将被延迟。


四:code

public class TaskStart {

	public static void main(String[] args) {
		
		
		Timer timer = new Timer();
		
//		timer.schedule(new Task(), new Date(),500);
		timer.scheduleAtFixedRate(new Task(), new Date(), 500);
	}
}

public class Task extends TimerTask{

	@Override
	public void run() {
		// TODO Auto-generated method stub
		try {
			System.out.println(new Date());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

五:

其实这个能满足大部分需求了,有意见请拍砖。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值