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

SpringBoot 定时任务

2017-06-10 19:41 489 查看
一、定时任务的实现方式
        (1)Java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行。一般用的较少。 
        (2)使用Quartz,这是一个功能比较强大的的调度器,可以让你的程序在指定时间执行,也可以按照某一个频度执行,配置起来稍显复杂。 
        (3) Spring3.0以后自带的task,可以将它看成一个轻量级的Quartz,而且使用起来比Quartz简单许多。

二、编写scheduler类,给定时任务类MyTask添加注解@Configuration和@EnableScheduling

@Configuration

@EnableScheduling

public class MyTask {


//每10秒钟执行一次

@Scheduled(cron = "0/10 * * * * *")

public void task1(){

System.out.println("this is my task1" +new Date());

}

//每1分钟执行一次

@Scheduled(cron = "0 0/1 * * * *")

public void task2(){

System.out.println("this is my task2"+new Date());

}

}


运行application,可以看到控制台中不断输出的定时任务执行的信息。

this is my task1Sat Jun 10 17:56:40 CST 2017

this is my task1Sat Jun 10 17:56:50 CST 2017

this is my task2Sat Jun 10 17:57:00 CST 2017

this is my task1Sat Jun 10 17:57:00 CST 2017

this is my task1Sat Jun 10 17:57:10 CST 2017

this is my task1Sat Jun 10 17:57:20 CST 2017

this is my task1Sat Jun 10 17:57:30 CST 2017

this is my task1Sat Jun 10 17:57:40 CST 2017

this is my task1Sat Jun 10 17:57:50 CST 2017

this is my task1Sat Jun 10 17:58:00 CST 2017

this is my task2Sat Jun 10 17:58:00 CST 2017

this is my task1Sat Jun 10 17:58:10 CST 2017

this is my task1Sat Jun 10 17:58:20 CST 2017

this is my task1Sat Jun 10 17:58:30 CST 2017


三、cronExpression配置说明和cron栗子

字段                   允许值                                         允许的特殊字符

秒                     0-59                                            , - * /

分                     0-59                                            , - * /

小时                   0-23                                            , - * /

日期                   1-31                                            , - * ? / L W C

月份                   1-12 或者 JAN-DEC                               , - * /

星期                   1-7 或者 SUN-SAT                                , - * ? / L C #

年(可选)            留空, 1970-2099                                  , - * /


- 区间

* 通配符

? 你不想设置那个字段


CRON表达式              含义

"0 0 12 * * ?"          每天中午十二点触发

"0 15 10 ? * *"         每天早上10:15触发

"0 15 10 * * ?"         每天早上10:15触发

"0 15 10 * * ? *"       每天早上10:15触发

"0 15 10 * * ? 2005"    2005年的每天早上10:15触发

“0 * 14 * * ?"          每天从下午2点开始到2点59分每分钟一次触发

"0 0/5 14 * * ?"        每天从下午2点开始到2:55分结束每5分钟一次触发

"0 0/5 14,18 * * ?"     每天的下午2点至2:55和6点至6点55分两个时间段内每5分钟一次触发

"0 0-5 14 * * ?"        每天14:00至14:05每分钟一次触发

"0 10,44 14 ? 3 WED"    三月的每周三的14:10和14:44触发

"0 15 10 ? * MON-FRI"   每个周一、周二、周三、周四、周五的10:15触发
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  SpringBoot 定时任务