admin管理员组

文章数量:1794759

spring定时器的使用——schedule

spring定时器的使用——schedule

applicationContext-schedule.xml配置:

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="www.springframework/schema/beans" xmlns:context="www.springframework/schema/context" xmlns:p="www.springframework/schema/p" xmlns:aop="www.springframework/schema/aop" xmlns:tx="www.springframework/schema/tx" xmlns:xsi="www.w3/2001/XMLSchema-instance" xmlns:task="www.springframework/schema/task" xsi:schemaLocation="www.springframework/schema/beans www.springframework/schema/beans/spring-beans-4.0.xsd www.springframework/schema/context www.springframework/schema/context/spring-context-4.0.xsd www.springframework/schema/aop www.springframework/schema/aop/spring-aop-4.0.xsd www.springframework/schema/tx www.springframework/schema/tx/spring-tx-4.0.xsd www.springframework/schema/util www.springframework/schema/util/spring-util-4.0.xsd www.springframework/schema/task www.springframework/schema/task/spring-task.xsd"> <task:annotation-driven scheduler="schedule" executor="executor"/> <!-- 在执行定时任务时最多启用五个线程 --> <task:scheduler id="schedule" pool-size="5"/> <!-- 与@Async配合使用,会在调度线程调用该任务时启用一个线程池,线程最大数为5,最小数为2,缓存任务为200,多于200的拒绝策略为丢弃 --> <task:executor id="executor" pool-size="5" keep-alive="2" queue-capacity="200" rejection-policy="ABORT"/> <context:annotation-config /> <context:component-scan base-package="****"/> </beans>

applicationContext-root.xml中引入applicationContext-schedule.xml:

<import resource="classpath:applicationContext-schedule.xml" />

web.xml的配置:

<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext-root.xml</param-value> </context-param>

java类中的写法:

@Scheduled(cron = "0 0 0/5 * * ?") void syncCaseStatus() { System.out.println("================定时器============="); }

总结:1.java类所在的包要跟applicationContext-schedule.xml中配置的扫描包对应。 2.spring中schedule默认是单线程的,要开启多线程需要加上applicationContext-schedule.xml中的配置 3.注意scheduler 和executor 配置间的差别。

本文标签: 定时器springschedule