(一)在xml里加入task的命名空间

<?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
classpath:/org/springframework/beans/factory/xml/spring-beans-4.1.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-4.1.xsd"> <task:annotation-driven /> </beans>

(二)启用注解驱动的定时任务

<?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
classpath:/org/springframework/beans/factory/xml/spring-beans-4.1.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-4.1.xsd"> <task:annotation-driven /> </beans>

(三)定时任务

  Class : ATask

package com.xindatai.ibs.liang;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; @Component
public class ATask implements IATask { @Scheduled(cron="0/10 * * * * ?")
public void aTask() {
try {
Thread.sleep(20000);
} catch (InterruptedException e) {
e.printStackTrace();
}
DateFormat df = new SimpleDateFormat("HH:mm:ss");
System.out.println(df.format(new Date()) + "********A任务每10秒执行一次进入测试");
} }

  Class : BTask

package com.xindatai.ibs.liang;

import java.text.SimpleDateFormat;
import java.util.Date; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class BTask implements IBTask { @Scheduled(cron="0/5 * * * * ?")
public void bTask() {
System.out.println(new SimpleDateFormat("HH:mm:ss").format(new Date()) + "********B任务每5秒执行一次进入测试");
} }

  Console :

20:11:50********A任务每10秒执行一次进入测试
20:11:50********B任务每5秒执行一次进入测试
20:11:55********B任务每5秒执行一次进入测试
20:12:00********B任务每5秒执行一次进入测试
20:12:20********A任务每10秒执行一次进入测试
20:12:20********B任务每5秒执行一次进入测试
20:12:25********B任务每5秒执行一次进入测试
20:12:30********B任务每5秒执行一次进入测试
20:12:50********A任务每10秒执行一次进入测试
20:12:50********B任务每5秒执行一次进入测试
20:12:55********B任务每5秒执行一次进入测试
20:13:20********A任务每10秒执行一次进入测试
20:13:20********B任务每5秒执行一次进入测试
20:13:25********B任务每5秒执行一次进入测试
20:13:50********A任务每10秒执行一次进入测试
20:13:50********B任务每5秒执行一次进入测试
20:13:55********B任务每5秒执行一次进入测试
20:14:00********B任务每5秒执行一次进入测试
20:14:20********A任务每10秒执行一次进入测试
20:14:20********B任务每5秒执行一次进入测试
20:14:25********B任务每5秒执行一次进入测试
20:14:30********B任务每5秒执行一次进入测试
20:14:50********A任务每10秒执行一次进入测试
20:14:50********B任务每5秒执行一次进入测试
20:14:55********B任务每5秒执行一次进入测试
20:15:20********A任务每10秒执行一次进入测试
20:15:20********B任务每5秒执行一次进入测试
20:15:25********B任务每5秒执行一次进入测试
20:15:30********B任务每5秒执行一次进入测试
20:15:50********A任务每10秒执行一次进入测试
20:15:50********B任务每5秒执行一次进入测试
20:15:55********B任务每5秒执行一次进入测试
20:16:00********B任务每5秒执行一次进入测试
20:16:20********A任务每10秒执行一次进入测试
20:16:20********B任务每5秒执行一次进入测试
20:16:25********B任务每5秒执行一次进入测试
20:16:30********B任务每5秒执行一次进入测试
20:16:50********A任务每10秒执行一次进入测试
20:16:50********B任务每5秒执行一次进入测试
20:16:55********B任务每5秒执行一次进入测试
20:17:20********A任务每10秒执行一次进入测试
20:17:20********B任务每5秒执行一次进入测试
20:17:25********B任务每5秒执行一次进入测试
20:17:30********B任务每5秒执行一次进入测试
20:17:50********A任务每10秒执行一次进入测试
20:17:50********B任务每5秒执行一次进入测试
20:17:55********B任务每5秒执行一次进入测试
20:18:20********A任务每10秒执行一次进入测试
20:18:20********B任务每5秒执行一次进入测试
20:18:25********B任务每5秒执行一次进入测试
20:18:50********A任务每10秒执行一次进入测试
20:18:50********B任务每5秒执行一次进入测试
20:18:55********B任务每5秒执行一次进入测试
20:19:00********B任务每5秒执行一次进入测试
20:19:20********A任务每10秒执行一次进入测试
20:19:20********B任务每5秒执行一次进入测试
20:19:25********B任务每5秒执行一次进入测试
20:19:30********B任务每5秒执行一次进入测试
20:19:50********A任务每10秒执行一次进入测试
20:19:50********B任务每5秒执行一次进入测试
20:19:55********B任务每5秒执行一次进入测试
20:20:20********A任务每10秒执行一次进入测试
20:20:20********B任务每5秒执行一次进入测试
20:20:25********B任务每5秒执行一次进入测试
20:20:50********A任务每10秒执行一次进入测试
20:20:50********B任务每5秒执行一次进入测试
20:20:55********B任务每5秒执行一次进入测试
20:21:00********B任务每5秒执行一次进入测试
20:21:20********A任务每10秒执行一次进入测试
20:21:20********B任务每5秒执行一次进入测试
20:21:25********B任务每5秒执行一次进入测试
20:21:50********A任务每10秒执行一次进入测试
20:21:50********B任务每5秒执行一次进入测试
20:21:55********B任务每5秒执行一次进入测试
20:22:20********A任务每10秒执行一次进入测试
20:22:20********B任务每5秒执行一次进入测试
20:22:25********B任务每5秒执行一次进入测试
20:22:30********B任务每5秒执行一次进入测试
20:22:50********A任务每10秒执行一次进入测试
20:22:50********B任务每5秒执行一次进入测试
20:22:55********B任务每5秒执行一次进入测试
20:23:00********B任务每5秒执行一次进入测试
20:23:20********A任务每10秒执行一次进入测试
20:23:20********B任务每5秒执行一次进入测试
20:23:25********B任务每5秒执行一次进入测试

spring的定时任务默认是单线程多个任务执行起来时间会有问题:B任务会因为A任务执行起来需要20S而被延后20S执行

(一)在xml里加入task的命名空间

(二)启用注解驱动的定时任务

<?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
classpath:/org/springframework/beans/factory/xml/spring-beans-4.1.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-4.1.xsd"> <!-- 启用annotation方式 -->
<task:annotation-driven scheduler="myScheduler" /> <!-- 配置任务线程池 -->
<task:scheduler id="myScheduler" pool-size="5" /> </beans>

  Console :

啦啦啦

啦啦啦

啦啦啦

啦啦啦

package com.xindatai.ibs.liang;
import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Date;
import org.springframework.scheduling.annotation.Scheduled;import org.springframework.stereotype.Component;
@Componentpublic class ATask implements IATask {
@Scheduled(cron="0/10 * * * * ?")public void aTask() {try {Thread.sleep(20000);} catch (InterruptedException e) {e.printStackTrace();}DateFormat df = new SimpleDateFormat("HH:mm:ss");System.out.println(df.format(new Date()) + "********A任务每10秒执行一次进入测试");}
}

spring定时任务详解(@Scheduled注解)多线程讲解的更多相关文章

  1. spring定时任务详解(@Scheduled注解)( 转 李秀才的博客 )

    在springMVC里使用spring的定时任务非常的简单,如下: (一)在xml里加入task的命名空间 xmlns:task="http://www.springframework.or ...

  2. spring定时任务详解

    (一)在spring.xml里加入task的命名空间 xmlns:task="http://www.springframework.org/schema/task" http:// ...

  3. spring事务详解(基于注解和声明的两种实现方式)

    Spring事务( Transaction ) 事务的概念 事务是一些sql语句的集合,作为一个整体执行,一起成功或者一起失败. 使用事务的时机 一个操作需要多天sql语句一起完成才能成功 程序中事务 ...

  4. spring定时任务详解(@Scheduled注解)

    Spring配置文件xmlns加入 xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocati ...

  5. 《转载》spring定时任务详解(@Scheduled注解)

    本文转载自爱如指间沙 //每一个小时执行一次 @Scheduled(cron = "0 0 * * * ?") public void saveDailyScoreSchedule ...

  6. Java使用定时任务详解

    定时任务 目录 定时任务 SpringBoot定时任务 默认单线程 使用异步多线程 Spring定时任务XML配置(注解形式几乎同上) 使用springTask: ----springTask为spr ...

  7. spring事务详解(三)源码详解

    系列目录 spring事务详解(一)初探事务 spring事务详解(二)简单样例 spring事务详解(三)源码详解 spring事务详解(四)测试验证 spring事务详解(五)总结提高 一.引子 ...

  8. spring事务详解(一)初探事务

    系列目录 spring事务详解(一)初探事务 spring事务详解(二)简单样例 spring事务详解(三)源码详解 spring事务详解(四)测试验证 spring事务详解(五)总结提高 引子 很多 ...

  9. 源码详解系列(八) ------ 全面讲解HikariCP的使用和源码

    简介 HikariCP 是用于创建和管理连接,利用"池"的方式复用连接减少资源开销,和其他数据源一样,也具有连接数控制.连接可靠性测试.连接泄露控制.缓存语句等功能,另外,和 dr ...

随机推荐

  1. Python Garbage Collection 与 Objective-C ARC

    转载请注明出处 http://blog.csdn.net/u014205968/article/details/69389363 Python GC 与 Objective-C ARC 提起GC(Ga ...

  2. BFS-广度优先遍历

    #include <iostream> #include <queue> using namespace std; /* 5 4 0 0 1 0 0 0 0 0 0 0 1 0 ...

  3. NetBeans Support Weblog

    https://blogs.oracle.com/NetBeansSupport/entry/tomcat_log_files ———————————————————————————————————— ...

  4. 数组新增,修改json数据

    1.向数组中添加json数据 var arr=[]; var json = {"name":"apple","color":"re ...

  5. jQuery验证控件jquery.validate.js的使用介绍

    官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation jQuery plugin: Validation 使用说明 转载 ...

  6. nodejs应用在linux服务器中的部署

    1.(可选)添加用户: addgroup wmui添加用户组useradd -d /home/wmui -s /bin/bash -m wmui创建wmui用户passwd wmui设置密码,如果忘记 ...

  7. SQL Server 2012 books

    SQL Server 2012 Introducing Microsoft SQL Server 2012 Microsoft SQL Server 2012 High-Performance T-S ...

  8. Numpy 的数学和统计方法

    可以通过数组上的一组数学函数对整个数组或某个轴向的数据进行统计计算.sum.mean以及标准差std等 聚合计算(aggregation, 通常叫做约简(reduction))既可以当做数组的实例方法 ...

  9. 发现eclipse红叉,查看markers发现Target runtime Apache Tomcat 6.0 is not defined

    1.导入以前的项目(Markers中注意查看,就在console选项卡旁边),报以下错误,但不影响操作: Description Resource Path Location TypeTarget r ...

  10. Unity -----一些可能存在的错误

    关于Unity中的资源管理,你可能遇到这些问题 张鑫 8 个月前 原文链接:关于Unity中的资源管理,你可能遇到这些问题 - Blog 在优化Unity项目时,对资源的管理可谓是个系统纷繁的大工程. ...