(一)在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. 【jquery】邮箱自动补全 + 上下翻动

    最近在做通行证项目,里面注册模块有邮箱注册,需求方想要在输入 @ 后触发下拉框显示各个邮箱,效果如下: html 代码: <!DOCTYPE HTML> <html lang=&qu ...

  2. javascript 获取当前部署项目路径

    javascript 获取当前部署项目路径 ========================================= javascript获取当前部署项目路径: 主要用到Location 对 ...

  3. Spring Cloud搭建手册(2)——Spring Cloud Config

    ※在Dalston.SR2版本以后,均不能正常加密,如果必须使用此功能,需要降级到SR1或Camden SR7. 1.首先需要创建一个config-server工程,作为配置中心的服务器,用来与git ...

  4. Ubuntu free以及Linux内存占用大的解释

    -bash-3.00$ free total used free shared buffers cached Mem: 514020 465932 48088 0 15864 348844 -/ bu ...

  5. C# Notes

    Token Based Authentication Attributes Tutorial - Conditional - Obsolete Covariance and Contravarianc ...

  6. node学习笔记8——发布npm包

    1.注册一个npm账号: 2.在控制台输入 npm login: 依次输入你的账号信息,可通过 npm whoami 来验证是否登录成功 3.初始化包,控制台输入 npm init: 完成之后,可以看 ...

  7. 安卓程序代写 网上程序代写[原]Android之Bluetooth编程

    ViewGroup 相关资料 : http://www.incoding.org/admin/archives/199.html http://bbs.csdn.net/topics/37014474 ...

  8. 2、QT分析之QPushButton的初始化

    原文地址:http://blog.163.com/net_worm/blog/static/127702419201001003326522/ 在简单的QT程序的第二行,声明了一个QPushButto ...

  9. MD5骨骼动画模型加载(一)

    前面我们分析了静态模型OBJ格式,桢动画模型MD2,这篇主要分析骨骼动画MD5的一些概念并且实现. 混合桢动画有计算简单,容易实现等优点,但是在需要比较细致的效果时,则需要更多的关键桢,每桢都添加相同 ...

  10. IDEA中 @override报错的解决方法

    今天用IDEA导入一个java工程时,碰上一个问题,代码中所有@override处标红,并提示:@override不支持对接口的实现. 网上百度了一下发现, 原因是引用JDK5版本中存在小bug的问题 ...