Timer在Java中用于执行定时任务,创建一个 Timer 对象就是新启动了一个线程。
构造函数
构造函数 | 说明 |
---|---|
Timer() | 创建一个定时器 |
Timer(boolean isDaemon) | 可以指定是否为守护线程 |
Timer(String name) | 指定名称 |
Timer(String name, boolean isDaemon) | 指定名称和是否为守护线程 |
常用方法
方法 | 说明 |
---|---|
schedule(TimerTask task, Date time) | 在 "指定的时间" 执行 指定的任务。(只执行一次) |
schedule(TimerTask task, Date firstTime, long period) | 从指定的时间开始,为重复的固定延迟执行安排指定的任务 |
schedule(TimerTask task, long delay) | 在指定延迟后执行指定的任务(执行一次) |
schedule(TimerTask task, long delay, long period) | 安排指定的任务指定的延迟后开始进行重复的固定延迟执行. |
scheduleAtFixedRate(TimerTask task, Date firstTime,long period) | 从指定时间开始,为重复的固定速率执行调度指定的任务 |
scheduleAtFixedRate(TimerTask task, long delay, long period) | 在指定的延迟后开始,为重复的固定速率执行调度指定的任务 |
cancel() | 终止此计时器,丢弃当前计划的任何任务。不会干扰当前正在执行的任务(如果存在)。一旦计时器终止,它的执行线程就会正常终止,并且不再可以在其上安排任务。 |
purge() | 从此计时器的任务队列中删除所有已取消的任务 |
方法schedule 和方法 scheduleAtFixedRate 在使用上基本没什么差别,就是 scheduleAtFixedRate 具有追赶执行性,什么意思呢?就是如果任务 在周期性运行过程中被打断了,scheduleAtFixedRate 会尝试把之前落下的任务补上运行。而schedule就不管了,接着运行接下来的任务就行了.
Timer的cancel() 和 TimerTask的cancel() 的区别
TimerTask.cancel() 指的是 把当前任务从任务对列里取消。Timer.cancel() 值的是把当前任务队列里的所有任务都取消。值得注意的是,Timer 的cancel()有时并不一定会停止执行计划任务,而是正常执行。这是因为Timer类中的cancel()方法有时并没有争抢到queue锁,所以TimerTask类中的任务继续正常执行。
网友评论