方式一:使用Spring Schedule任务调度实现
(主要是通过对任务类的注解配置,或者使用这里的xml配置实现)
注:采用这种方式的任务是单线程,即串行的,后面的任务会根据前面任务的执行时间往后顺延
第一步:建立一个普通任务类
public class ScheduledJob { String nowtime=""; /** * 要调度的具体任务 /** * cron表达式:* * * * * *(共6位或7位,使用空格隔开,具体如下) * cron表达式:*(秒0-59) *(分钟0-59) *(小时0-23) *(日期1-31) *(月份1-12或是JAN-DEC) *(星期1-7或是SUN-SAT) * 定时卡点计算。每天凌晨 02:00 执行一次 */ //--第一个调度任务 public void doJob1(){ nowtime= DateFormatUtils.format(new Date(),"yyyy-MM-dd HH:mm:ss"); System.out.println("ScheduledJob.doJob1 on:"+nowtime); try { Thread.sleep(10000); } catch (InterruptedException e) { e.printStackTrace(); } } //--第二个调度任务 public void doJob2(){ nowtime= DateFormatUtils.format(new Date(),"yyyy-MM-dd HH:mm:ss"); System.out.println("ScheduledJob.doJob2 on:"+nowtime); }
第二步: 添加配置文件
<!--1. 自动任务--> <task:executor id="executor" pool-size="5" /> <task:scheduler id="scheduler" pool-size="10" /> <!-- 启动定时器,开启这个配置,spring才能识别@Scheduled注解 --> <task:annotation-driven executor="executor" scheduler="scheduler" /> <!--2. 配置作业类--> <bean name="ScheduledJob" class="com.chencl.task.job.ScheduledJob"/> <!--3. 配置任务列表--> <task:scheduled-tasks> <!--定时任务:每天15:11:00执行一次--> <!--<task:scheduled ref="ScheduledJob" method="doJob1" cron="05 19 16 * * ?" />--> <task:scheduled ref="ScheduledJob" method="doJob1" fixed-delay="2000" /> <!--频次任务:每隔5S执行一次--> <task:scheduled ref="ScheduledJob" method="doJob2" fixed-delay="5000" /> <!--<task:scheduled ref="ScheduledJob" method="doJob2" cron="10 19 16 * * ?" />--> </task:scheduled-tasks>
小结:这是最简单的方式,单线程,以上两步即可完成任务配置。