ssm 线程

来源:互联网 发布:c 语言整型常量 编辑:程序博客网 时间:2024/06/05 07:26

在applicationContext.xml中(Spriing的配置文件):

添加(位置如图):

xmlns:task="http://www.springframework.org/schema/task"
 http://www.springframework.org/schema/task  http://www.springframework.org/schema/task/spring-task-3.2.xsd

然后扫描注解文件,可能你需要配置一下注解文件在哪个包下,就扫描哪个包...不过...我们这个项目配的是通配...

<context:component-scan base-package="com.*.*" />

 

然后配置了线程池,提高程序运行速度

<task:scheduler id="scheduler" pool-size="10" />  <task:executor id="executor" keep-alive="3600" pool-size="100-200" queue-capacity="500" rejection-policy="CALLER_RUNS" /> <task:annotation-driven executor="executor" scheduler="scheduler" />

import java.text.SimpleDateFormat;import java.util.Date;import org.springframework.scheduling.annotation.Scheduled;import org.springframework.stereotype.Controller;/** * 系统定时器,到达设定时间后,运行设定的代码,使用Scheduled(cron="")标签<p> * 一个cron表达式有至少6个(也可能7个)由空格分隔的时间元素.<br> * 按顺序依次为: * <ol> * <li> 秒(0-59)[, - * /] * <li> 分(0-59)[, - * /] * <li> 时(0-23)[, - * /] * <li> 天(月)(0-31)[, - * ? / L W C] * <li> 月(0-11)(月份的简写)[, - * /] * <li> 天(星期)(1-7)(SUN,MON,TUE,WED,THU,FRI,SAT)[, - * ? / L C #] * <li> 年份(1970-2099)[, - * /] * </ol> * 时间元素可以是: * <ul> * <li> 一个值(如6) * <li> 一个连续区间(9-12) * <li> 一个间隔时间(8-18/4)(/表示每隔4小时) * <li> 一个列表(1,3,5) * </ul> * 通配符: * <ol> * <li> ?:<b>由于"月份中的日期"和"星期中的日期"这两个元素互斥的,必须要对其中一个设置?.</b> * <li> *:字符代表所有可能的值,“*”在子表达式(月 )里表示每个月的含义,“*”在子表达式(天(星期) )表示星期的每一天 * <li> /:用来指定数值的增量,在子表达式(分钟)里的“0/15”表示从第0分钟开始,每15分钟运行一次, *         在子表达式(分钟)里的“3/20”表示从第3分钟开始,每20分钟(它和“3,23,43”的含义一样)运行一次 * <li> -:表达一个范围,如在小时字段中使用“10-12”,则表示从10到12点,即10,11,12. * <li> ,:表达一个列表值,如在星期字段中使用"MON,WED,FRI",则表示星期一,星期三和星期五; * <li> #:该字符只能在星期字段中使用,表示当月某个工作日. *         如6#3表示当月的第三个星期五(6表示星期五,#3表示当前的第三个),而4#5表示当月的第五个星期三,假设当月没有第五个星期三,忽略不触发. * <li> L:仅被用于天(月)和天(星期)两个子表达式,它是单词“last”的缩写,在天(月)子表达式中,“L”表示一个月的最后一天. *         在天(星期)自表达式中,“L”表示一个星期的最后一天,也就是SAT. *         如果在“L”前有具体的内容,它就具有其他的含义了,例如:“6L”表示这个月的倒数第6天,“FRIL”表示这个月的最一个星期五. *         <b>在使用“L”参数时,不要指定列表或范围,因为这会导致问题.</b> * <li> W:表示平日(Mon-Fri),并且仅能用于日域中。它用来指定离指定日的最近的一个平日。大部分的商业处理都是基于工作周的,所以 W 字符可能是非常重要的. *         例如,日域中的 15W 意味着 "离该月15号的最近一个平日。" 假如15号是星期六,那么 trigger 会在14号(星期五)触发,因为星期五比星期一离15号更近. * <li> LW组合:在日期字段可以组合使用LW,它的意思是当月的最后一个工作日; * <li> C:代表“Calendar”的意思。它的意思是计划所关联的日期,如果日期没有被关联,则相当于日历中所有日期。例如5C在日期字段中就相当于日历5日以后的第一天. *       1C在星期字段中相当于星期日后的第一天. * </ol> *          * 示例:<br> * <ul> * <li> 0 0 10,14,16 * * ?          每天10点,14点,16点 * <li> 0 0/30 9-17 * * ?           朝九晚五工作时间内每半小时 * <li> 0 0 12 ? * WED              每个星期三中午12点 * <li> 0 0 12 * * ?                每天中午12点 * <li> 0 15 10 ? * *               每天上午10:15触发 * <li> 0 15 10 * * ?               每天上午10:15触发 * <li> 0 15 10 * * ? *             每天上午10:15触发 * <li> 0 15 10 * * ? 2005          2005年的每天上午10:15触发  * <li> 0 * 14 * * ?                在每天下午2点到下午2:59期间的每1分钟触发 * <li> 0 0/5 14 * * ?              在每天下午2点到下午2:55期间的每5分钟触发 * <li> 0 0/5 14,18 * * ?           在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发  * <li> 0 0-5 14 * * ?              在每天下午2点到下午2:05期间的每1分钟触发 * <li> 0 10,44 14 ? 3 WED          每年三月的星期三的下午2:10和2:44触发 * <li> 0 15 10 ? * MON-FRI         周一至周五的上午10:15触发 * <li> 0 15 10 15 * ?              每月15日上午10:15触发  * <li> 0 15 10 L * ?               每月最后一日的上午10:15触发  * <li> 0 15 10 ? * 6L              每月的最后一个星期五上午10:15触发 * <li> 0 15 10 ? * 6L 2002-2005    2002年至2005年的每月的最后一个星期五上午10:15触发  * <li> 0 15 10 ? * 6#3             每月的第三个星期五上午10:15触发 * </ul> * <br> * <br> * */@Controllerpublic class SystemeTimer {        /**     * 测试,每三秒输出一次时间     * */    @Scheduled(cron="0/3 * * ? * *")    public void test(){        Date date = new Date();        SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd hh:mm:ss");        String nowtime = sdf.format(date);        System.out.println(nowtime);    }}
原创粉丝点击