spring定时任务详解(@Scheduled注解)多线程讲解
(一)在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注解)多线程讲解的更多相关文章
- spring定时任务详解(@Scheduled注解)( 转 李秀才的博客 )
在springMVC里使用spring的定时任务非常的简单,如下: (一)在xml里加入task的命名空间 xmlns:task="http://www.springframework.or ...
- spring定时任务详解
(一)在spring.xml里加入task的命名空间 xmlns:task="http://www.springframework.org/schema/task" http:// ...
- spring事务详解(基于注解和声明的两种实现方式)
Spring事务( Transaction ) 事务的概念 事务是一些sql语句的集合,作为一个整体执行,一起成功或者一起失败. 使用事务的时机 一个操作需要多天sql语句一起完成才能成功 程序中事务 ...
- spring定时任务详解(@Scheduled注解)
Spring配置文件xmlns加入 xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocati ...
- 《转载》spring定时任务详解(@Scheduled注解)
本文转载自爱如指间沙 //每一个小时执行一次 @Scheduled(cron = "0 0 * * * ?") public void saveDailyScoreSchedule ...
- Java使用定时任务详解
定时任务 目录 定时任务 SpringBoot定时任务 默认单线程 使用异步多线程 Spring定时任务XML配置(注解形式几乎同上) 使用springTask: ----springTask为spr ...
- spring事务详解(三)源码详解
系列目录 spring事务详解(一)初探事务 spring事务详解(二)简单样例 spring事务详解(三)源码详解 spring事务详解(四)测试验证 spring事务详解(五)总结提高 一.引子 ...
- spring事务详解(一)初探事务
系列目录 spring事务详解(一)初探事务 spring事务详解(二)简单样例 spring事务详解(三)源码详解 spring事务详解(四)测试验证 spring事务详解(五)总结提高 引子 很多 ...
- 源码详解系列(八) ------ 全面讲解HikariCP的使用和源码
简介 HikariCP 是用于创建和管理连接,利用"池"的方式复用连接减少资源开销,和其他数据源一样,也具有连接数控制.连接可靠性测试.连接泄露控制.缓存语句等功能,另外,和 dr ...
随机推荐
- Codeforces Round #256 (Div. 2) B (448B) Suffix Structures
题意就是将第一个字符串转化为第二个字符串,支持两个操作.一个是删除,一个是更换字符位置. 简单的字符串操作!. AC代码例如以下: #include<iostream> #include& ...
- 【C】——C利用回调函数实现多态
案例: 功能:可以根据用户输入的命令完成相应的功能: 例如: 用户输入 hello 完成输出 hello的功能. 用户输入 hi 完成输出 hi 的功能. 一般的写法可能会写两个函数 ...
- 【css】关于 hr 在各浏览器中的问题
在做页面是有时候会用到分割线 hr,但是在 ie6 和 ie7 下显示很蛋疼,本文将教你如何写出兼容各浏览器的 hr. 首页我们先了解下 hr 在各浏览器下的差异,如下表格: 正常浏览器 ie6. ...
- WebRTC 学习资源 电子书 WebRTC权威指南 Learning WebRTC
webRTC源码下载地址:https://pan.baidu.com/s/18CjClvAuz3B9oF33ngbJIw 提取码:wl1e 1.<WebRTC权威指南>第三版 中文版 本书 ...
- JDBC异常
异常处理允许我们以受控的方式处理异常情况,而不是直接退出程序,例如程序定义的错误. 发生异常时可以抛出异常.术语“异常”表示当前的程序执行停止,并且被重定向到最近的适用的catch子句.如果没有适用的 ...
- python3两个字典的合并
两个字典的合并其实很简单,直接用dict的update即可,代码如下: # /usr/bin/python3 # -*- encoding: utf-8 -*- ", "" ...
- Wings 3D
Wings 3D 编辑 Wings 3D 是一个开源的三维计算机图形软件.使用翼边数据库.注重于多边形建模,构思取与 Izware 的 Nendo 和 Mirai.支持多种操作系统,包括 Linux. ...
- Python内部机制。
type ,object ,__class__ ,__bases__ ,__metaclass__ , -------------------------不明白的地方----------------- ...
- linux stat 命令查看文件信息
在Linux中,没有文件创建时间的概念.只有文件的访问时间.修改时间.状态改变时间.也就是说不能知道文件的创建时间.但如果文件创建后就没有修改过,修改时间=创建时间;如果文件创建后,状态就没有改变过, ...
- 前端不容错过的jQuery图片滑块插件
作为前端开发者,我们会碰到很到各种各样的jQuery插件,但老实说,很少有自己写的.今天要分享的几款jQuery图片滑块插件,也就是jQuery焦点图插件,基本上会在每个网站都有应用,可以下载看看,也 ...