配置java轻量级定时器及其逻辑

一、在spring-cloud(spring-boot)中:

使用spring的定时器,spring自带支持定时器的任务实现。其可通过简单配置来使用到简单的定时任务。

@Component
@Configurable
@EnableScheduling
public class ScheduledSitemapController {
    //每1分钟执行一次
    @Scheduled(cron = "0 */1 *  * * * ")
    public void reportCurrentByCron(){
        System.out.println ("Scheduling Tasks Examples By Cron: The time is now " + dateFormat ().format (new Date ()));
    }
    private SimpleDateFormat dateFormat(){
        return new SimpleDateFormat ("HH:mm:ss");
    }
}

使用spring的定时任务就这么简单,其中有几个比较重要的注解:

   @EnableScheduling:标注启动定时任务。

          @Scheduled(fixedRate = 1000 * 30)  定义某个定时任务。

 

二、在springmvc架构中:

在beans文件中分别加入 :

xmlns:task="http://www.springframework.org/schema/task"

    http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd ">

 

配置定时类文件:

<!-- 配置定时器 -->
    <bean id="synchroDataTask" class="com.huatugz.ins.task.SynchroDataTask"></bean>  
    <task:scheduled-tasks>  
    <!-- 设置synchroDataTask类中方法getData的定时规则 -->
<task:scheduled ref="synchroDataTask" method="getData" cron="0/10 * * * * ?"/>  
    </task:scheduled-tasks>  

 

注释:cron="0/10 * * * * ?"/>  逻辑

 

三、域中符号解释:

 分别代表意思:* * * * * * 代表秒、分、时、天、月、星期

在jenkins中:* * * * * 代表的是分、时、天、月、星期。

一:

1.     * :表示匹配任意值。比如在Seconds域中配置为*,则表示每秒执行。(可用于任意域)

2.     ?:只能用在 DayofMonth和DayofWeek,表示匹配该域的任意值。

3.     -:表示范围。例如:在Seconds域中配置2-10,则表示从2到10秒内,每秒执行。

4.     /:表示从起始开始触发,然后每个固定时间执行一次。比如在Seconds域中配置5/20,则表示在第5秒开始执行,然后每过20秒执行一次(以每一分钟为周期)。

5.     ,:表示枚举值。例如在Seconds域中配置5,20,25,则表示在第5秒、20秒和25秒执行。

6.     L:只能用在 DayofMonth和DayofWeek,表示每周或者每月的最后一天。如果DayofWeek域配置5L则表示最后一个星期的周四执行。

二:

"0 0 */2 * * ?" 与"0 0 0/2 * * ?" 都为每两小时运行一次,区别为,前者从任意时间开始的两小时,后者为从一天的0点开始后每两小时。

三:Cron 常用表达式

"0 * * * * ?" 
每分钟执行一次
"0 0/5 * * * ?" 
每隔5分钟执行一次
"0 0/15 * * * ?" 
每隔15分钟执行一次
"0 0 * * * ?" />
每隔1小时执行一次
"0 0 */2 * * ?" 
每隔2小时执行一次
"0 0 0,12 * * ?" />
每天0点和12点各执行一次
"0 0 8 * * ?" 
每天早上8点执行一次
"0 0 2 ? * FRI" />
逢星期五零晨2点执行一次
"0 0 2 ? * MON-FRI" 
星期一到星期五零晨2点执行一次
"0 0 2 1 * ?" />
每月1号零晨2点执行一次
"0 0 2 L * ?" 
每月最后一天零晨2点执行一次
"0 0 12 * * ?" 
每天中午12点执行一次
"0 15 10 ? * *" 
每天上午10点15执行一次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kunzai6

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值