JAVA定时任务定时任务
作者:高志远
2017/6/25 2 23
一、什么是定时任务:一、什么是定时任务:
定时任务是指调度程序在指定的时间或周期触发执行的任务
使用场景:发送邮件、统计、状态修改、消息推送、活动开启、增量索引
二、定时任务实现技术:二、定时任务实现技术:
1. Java自带的java.util.Timer 类,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指
定时间运行。使用较少。
2. Spring3.0以后自主开发的定时任务工具spring task,使用简单,支持线程池,可以高效处理许多不同的定时任务,除spring相关的包外不需要额
外的包,支持注解和配置文件两种形式。 不能处理过于复杂的任务
3. 专业的定时框架quartz,功能强大,可以让你的程序在指定时间执行,也可以按照某一个频度执行,支持数据库、监听器、插件、集群
三、示例
1. Timer 单线程
/**
* java timer 测试类
* Created by gaozhy on 2017/6/24.
*/
public class JavaTimer {
public static void main(String[] args) {
try {
// 创建定时器
Timer timer = new Timer();
// 添加调度任务
// 安排指定的任务在指定的时间开始进行重复的 固定延迟执行
timer.schedule(new MyTask(),new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2017-06-24 22:31:10"),10*1000);
// 安排指定的任务在指定的延迟后开始进行重复的 固定速率执行
//timer.scheduleAtFixedRate(new MyTask(),new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2017-06-24 22:31:10"),10*1000);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
/**
* 任务类
* Created by gaozhy on 2017/6/24.
*/
public class MyTask extends TimerTask{
// 定义调度任务
public void run() {
System.out.println("log2:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
}
}