(一)在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】ajax 请求成功后新开窗口被拦截解决方法

    问题: 前面开发项目时碰到一个问题,ajax 异步请求成功后需要新开窗口打开 url,使用的是 window.open() 方法,但是很可惜被浏览器给拦截了,怎么解决这个问题呢? 分析: 浏览器之所以 ...

  2. 详解Github的.gitignore忽略文件+.gitignore不生效解决方案+生产配置大奉送

    详解Github的.gitignore忽略文件+.gitignore不生效解决方案+生产配置大奉送 Git中有一个非常重要的一个文件-----.gitignore 今天给大家免费送一个.gitigno ...

  3. Spring Cloud 5分钟搭建教程(附上一个分布式日志系统项目作为参考) - 推荐

    http://blog.csdn.net/lc0817/article/details/53266212/ https://github.com/leoChaoGlut/log-sys 上面是我基于S ...

  4. 百度地图的demo提示key验证错误!错误码:230;

    在已经有BaiduMap的APIKey后使用AndroidStudio导入Baidu地图的as版的demo,提示key验证错误!错误码:230; 首先,因为百度地图demo中用自己的keystore文 ...

  5. linux进程的挂起和恢复

    进程的挂起及恢复 #ctrl+z:挂起,程序放到后台,程序没有结束. #jobs:查看被挂起的程序工作号 恢复进程执行时,有两种选择:fg命令将挂起的作业放回到前台执行:用bg命令将挂起的作业放到后台 ...

  6. Spring系列(一):Spring的基本概念及其核心

    一.Spring是什么 Spring是一种多层的J2EE应用程序框架,其核心就是提供一种新的机制管理业务对象及其依赖关系. 二.为什么要使用Spring 1. 降低组件之间的耦合度,实现软件各层之间的 ...

  7. Spring JDBC SqlUpdate类示例

    org.springframework.jdbc.object.SqlUpdate类提供了表示SQL更新的可重用操作对象. 使用到的 Student 表的结构如下 - CREATE TABLE Stu ...

  8. mvn archetype:generate 创建Maven项目

    mvn archetype:generate 创建Maven项目 mvn compile 编译源代码 mvn deploy 发布项目 mvn test-compile 编译测试源代码 mvn test ...

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

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

  10. Erlang HTTP client:ibrowse

    ibrowse: https://github.com/cmullaparthi/ibrowse