我不喜欢用注解,我也不喜欢用quartz,我就要一个类似于Linux下面crontab的定时任务的功能。
下面的方式,我认为是最简单最直接的方式:
配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.1.xsd"> <bean id="myjob" class="com.zhaoyanblog.MyJob" /> <task:scheduler id="scheduler" pool-size="2" /> <task:scheduled-tasks scheduler="scheduler"> <!-- 延迟1秒执行一次 --> <task:scheduled ref="myjob" method="run" fixed-delay="1000"/> <!-- 每天1点执行一次 --> <task:scheduled ref="myjob" method="run" cron="0 0 1 * * *"/> <!-- 每分钟执行一次 --> <task:scheduled ref="myjob" method="run" cron="0 */1 * * * *"/> </task:scheduled-tasks> </beans> |
写一个定时任务
1 2 3 4 5 6 7 8 9 | package com.zhaoyanblog class Myjob { public void run() { //TODO } } |
注意:
第一:cron是六个位置,和linux下面的crontab 不一样,多了一个秒位。
第二:任务是阻塞式的,当前面的一个任务没有完成,或者scheduler线程数被占光了,都会导致后面的任务阻塞。
除非注明,赵岩的博客文章均为原创,转载请以链接形式标明本文地址
本文地址:https://zhaoyanblog.com/archives/670.html