e_timer_基本使用_20210221

基本说明

  • JDK1.3引入

  • 允许按照固定频率重复执行某项任务

  • 无法现实与日历相关的的任务调度,例如:每周一08:00执行

  • 只适合对执行时间非常短的任务进行调度,因为在Timer中所有的TimerTask都在同一背景线程中执行,长时间的任务会严重影响到Timer的调度工作。

基本使用

0:编写TimerTask的子类
1:创建TimerTask对象
2:创建Timer对象
3:调用Timer对象方法执行任务

范例

public class SimpleTimerTask extends TimerTask {
    
    

    private int count = 0;

    @Override
    public void run() {
    
    
        System.out.println("第" + count + "次任务执行.");
        // 获取本次安排执行的时间点
        Date exeTime = new Date(scheduledExecutionTime());
        System.out.println("本次任务安排执行时间点为:" + exeTime);
        // 在第2次执行后主动退出
        if (++count > 1) {
    
    
            cancel();
        }
    }
}
public class TimerRunner {
    
    
    public static void main(String[] args) throws InterruptedException {
    
    
        Timer timer = new Timer();
        TimerTask task = new SimpleTimerTask();
        timer.schedule(task, 1000L, 5000L);
        System.out.println("开始时间:" + new Date());
        TimeUnit.SECONDS.sleep(20);
        // 如果不执行cancel(),程序不会结束
        timer.cancel();
        System.out.println("结束时间:" + new Date());
    }
}

猜你喜欢

转载自blog.csdn.net/for_my_faith/article/details/113926468