您的位置:首页 > 其它

Quartz定时任务

2016-06-19 21:45 218 查看
    Quartz是一个完全由java编写的开源作业调度框架,可以用来创建简单或运行十个、百个甚至是更复杂的程序。而我主要用的是用来设置定时完成任务。首先来看一下如何配置定时任务的时间。

    CronTrigger时间格式配置说明:

    格式:秒 分 时 日 月 周 年

    常用示例

           0 0 12 * * ?     每天12点触发

           0 15 10 ?* *     每天10点15触发

           0 * 14 * * ?     每天14点到14点59分每分触发

           0 0/5 14 * * ?    每天14点到14点59分从整点开始,每隔5分钟触发一次

           0 0-5 14 * * ?   每天14点到14点5分每分钟触发一次

    

    通配符说明:

           * :表示所有值,"*"在子表示式(月)表示每个月的含义。

           / : 用来指定数值的增量, 如上例在(分)表示从0分钟开始,每隔五分钟执行一次

           ?:仅被用于月和星期两个子表达式,表示不指定值,当2个子表达式其中之一被指定了值之后,为“了                避免冲突,需要将另一个自表达式设为"?"

           L : “L” 字符仅被用于天(月)和天(星期)两个子表达式,它是单词“last”的缩写

                在两个子表达式里的含义是不同的。

                       在月子表达式中,“L”表示一个月的最后一天 ,

                       在星期自表达式中,“L”表示一个星期的最后一天,也就是SAT

               例如:“4L”表示这个月的倒数第4天,“FRIL”表示这个月的最后一个星期五

               注意:在使用“L”参数时,不要指定列表或范围,因为这会导致问题

    上述已经分析了每个通配符的含义,下面就看看在项目中的应用:

     配置文件中配置时间:

          <task:scheduled ref="weixinRuleJob" method="beginDayRules" cron="0 0 0 * * ?" />

     java文件中调用:

           @Service("TimeFixedSend")
public class TimeFixedSend{

MailUitl mailUitl = new MailUitl();

public void schedualJob(){
System.out.println("开始执行指定任务.");
//调用发送邮件的功能
mailUitl.sendMail("dayMail");
System.out.println("上一次的任务还未结束");
}
}
     注意:一定要加上Service,否则找不到方法
     总结:定时任务完成有多种方式,之前用的是java的timer类来完成这个任务的,但使用timer需要去重新开启一个线程,这对程序来说,又是一种负担,经过他人的指点,采用这种方式,而且这种方式比Timer的时间精确度要高。

           

     
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: