您的位置:首页 > 编程语言 > Java开发

【Java常用类库】_定时调度笔记

2013-01-29 15:21 253 查看
【Java常用类库】_定时调度笔记

本章目标:

了解定时调度的作用。

掌握Timer和TimerTask类的作用

3、具体内容

定时调度,每当一端时间,程序会自动执行,称为定时调度。

如果要使用定时调度,则必须保证程序始终运行着才可以,也就是说是相当于定时调度是在程序之外又启动了一个新的线程!

Timer和TimeTask两个类完成定时调度。

Timer类

Timer类是一种线程设施,可以用来实现某一个时间或某一段时间后,安排某一个任务执行一次,或定期重复执行。该功能要与TimerTask配合使用。TimerTask类用来实现由Timer安排的一次或重复执行的某一个任务。

每一个Timer对象对应是的一个线程,因此计时器所执行的任务应该迅速完成,否则可能会延迟后续任务的执行,而这些后续的任务就有可能堆在一起,等到该任务完成后才能快速连续执行。



schedule()与scheduleAtFixedRate()方法的区别

两者的区别在与重复执行任务时,对于时间间隔出现延迟的情况处理:

schedule()方法的执行时间间隔永远是固定的,如果之前出现了延迟的情况,之后也会继续按照设定好的间隔时间来执行。

scheduleAtFixedRate()方法可以根据出现的延迟时间自动调整下一次间隔的执行时间。

实例代码(间隔一段时间打印当前时间) :

// 完成具体的任务操作

import java.util.TimerTask ;
import java.util.Date ;
import java.text.SimpleDateFormat ;
class MyTask extends TimerTask{    // 任务调度类都要继承TimerTask
    public void run(){
        SimpleDateFormat sdf = null ;
        sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS") ;
        System.out.println("当前系统时间为:" + sdf.format(new Date())) ;
    }
};


import java.util.Timer ;
public class TestTask{
    public static void main(String args[]){
        Timer t = new Timer() ;    // 建立Timer类对象
        MyTask mytask = new MyTask() ;    // 定义任务
        t.schedule(mytask,1000,2000) ;    // 设置任务的执行,1秒后开始,每2秒重复
    }
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: