SpringBoot2.x整合定时任务和异步任务处理
SpringBoot2.x整合定时任务和异步任务处理
一.项目环境
springboot2.x本身已经集成了定时任务模块和异步任务,可以直接使用
二.springboot常用定时任务配置
1.在启动类上使用注解@EnableScheduling开启定时任务,使用@EnableAsync开启异步任务
- @SpringBootApplication //一个注解顶下面3个
- @EnableScheduling //开启定时任务
- @EnableAsync //开启异步任务
- public class XdclassApplication {
- public static void main(String[] args) {
- SpringApplication.run(XdclassApplication.class, args);
- }
- }
2.使用注解@Schedule声明这是一个定时任务,Springboot启动会扫描到该注解并标记为定时任务
- @Component
- public class TestTask {
- @Scheduled(cron="*/1 * * * * *")
- public void sum2(){
- System.out.println("cron 每秒 当前时间:"+new Date());
- }
- }
3.使用@Asyn声明这是一个异步任务的方法,如果在类上使用该注解,则该类下所有方法都是异步任务的方法
- @Component
- @Async
- public class AsyncTask {
- public void task1() throws InterruptedException{
- long begin = System.currentTimeMillis();
- Thread.sleep(1000L);
- long end = System.currentTimeMillis();
- System.out.println("任务1耗时="+(end-begin));
- }
- public void task2() throws InterruptedException{
- long begin = System.currentTimeMillis();
- Thread.sleep(2000L);
- long end = System.currentTimeMillis();
- System.out.println("任务2耗时="+(end-begin));
- }
- public void task3() throws InterruptedException{
- long begin = System.currentTimeMillis();
- Thread.sleep(3000L);
- long end = System.currentTimeMillis();
- System.out.println("任务3耗时="+(end-begin));
- }
- //获取异步结果
- public Future<String> task4() throws InterruptedException{
- long begin = System.currentTimeMillis();
- Thread.sleep(2000L);
- long end = System.currentTimeMillis();
- System.out.println("任务4耗时="+(end-begin));
- return new AsyncResult<String>("任务4");
- }
- public Future<String> task5() throws InterruptedException{
- long begin = System.currentTimeMillis();
- Thread.sleep(3000L);
- long end = System.currentTimeMillis();
- System.out.println("任务5耗时="+(end-begin));
- return new AsyncResult<String>("任务5");
- }
- public Future<String> task6() throws InterruptedException{
- long begin = System.currentTimeMillis();
- Thread.sleep(1000L);
- long end = System.currentTimeMillis();
- System.out.println("任务6耗时="+(end-begin));
- return new AsyncResult<String>("任务6");
- }
- }
测试
- @RestController
- @RequestMapping("/api/v1")
- public class UserController {
- @Autowired
- private AsyncTask task;
- @GetMapping("async_task")
- public JsonData exeTask() throws InterruptedException{
- long begin = System.currentTimeMillis();
- // task.task1();
- // task.task2();
- // task.task3();
- Future<String> task4 = task.task4();
- Future<String> task5 = task.task5();
- Future<String> task6 = task.task6();
- //这里死循环让主线程挂起,目的是为了计算其他异步任务的执行任务的耗时
- for(;;){
- if (task4.isDone() && task5.isDone() && task6.isDone()) {
- break;
- }
- }
- long end = System.currentTimeMillis();
- long total = end-begin;
- System.out.println("执行总耗时="+total);
- return JsonData.buildSuccess(total);
- }
- }
SpringBoot2.x整合定时任务和异步任务处理的更多相关文章
- 【SpringBoot】SpringBoot2.x整合定时任务和异步任务处理
SpringBoot2.x整合定时任务和异步任务处理 一.项目环境 springboot2.x本身已经集成了定时任务模块和异步任务,可以直接使用 二.springboot常用定时任务配置 1.在启动类 ...
- 小D课堂 - 零基础入门SpringBoot2.X到实战_第10节 SpringBoot整合定时任务和异步任务处理_41、SpringBoot定时任务schedule讲解
笔记 1.SpringBoot定时任务schedule讲解 简介:讲解什么是定时任务和常见定时任务区别 1.常见定时任务 Java自带的java.util.Timer类 ...
- SpringBoot整合定时任务和异步任务处理 3节课
1.SpringBoot定时任务schedule讲解 定时任务应用场景: 简介:讲解什么是定时任务和常见定时任务区别 1.常见定时任务 Java自带的java.util.Timer类 ...
- SpringBoot整合定时任务和异步任务处理
SpringBoot定时任务schedule讲解 简介:讲解什么是定时任务和常见定时任务区别 1.常见定时任务 Java自带的java.util.Timer类 timer:配置比较麻烦,时间延后问题, ...
- 【SpringBoot】整合定时任务和异步任务
========================10.SpringBoot整合定时任务和异步任务处理 =============================== 1.SpringBoot定时任务s ...
- SpringBoot整合全局异常处理&SpringBoot整合定时任务Task&SpringBoot整合异步任务
============整合全局异常=========== 1.整合web访问的全局异常 如果不做全局异常处理直接访问如果报错,页面会报错500错误,对于界面的显示非常不友好,因此需要做处理. 全局异 ...
- 【SpringBoot】息队列介绍和SpringBoot2.x整合RockketMQ、ActiveMQ
========================13.消息队列介绍和SpringBoot2.x整合RockketMQ.ActiveMQ ======================= 1.JMS介绍和 ...
- SpringBoot2.0 整合 QuartJob ,实现定时器实时管理
一.QuartJob简介 1.一句话描述 Quartz是一个完全由java编写的开源作业调度框架,形式简易,功能强大. 2.核心API (1).Scheduler 代表一个 Quartz 的独立运行容 ...
- SpringBoot2.0 整合 Dubbo框架 ,实现RPC服务远程调用
一.Dubbo框架简介 1.框架依赖 图例说明: 1)图中小方块 Protocol, Cluster, Proxy, Service, Container, Registry, Monitor 代表层 ...
随机推荐
- Python Web开发:使用Django框架创建HolleWorld项目
开发环境搭建 Python环境安装 下载地址:https://www.python.org/downloads// Django安装 打开Windows CMD输入pip install django ...
- 微信小程序(4)--二维码窗口
微信小程序二维码窗口: <view class="btn" bindtap="powerDrawer" data-statu="open&quo ...
- JVM分为哪些区,每一个区干嘛的?
程序计数器PC 线程私有的 它可以看做是当前线程所执行的字节码的行号指示器 内存区域中唯一一个没有规定任何OutOfMemoryError的区域 Java虚拟机栈 线程私有的 每个方法在执行的同时都会 ...
- HTML5 canvas绘制图片
demo.js window.onload=function() { createcanvas(); drawImage(); } function createcanvas() { var CANV ...
- BZOJ3038 上帝造题的七分钟
Time Limit: 3 Sec Memory Limit: 128 MB Description XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. "第一分钟,X说, ...
- Linux 给用户 赋某个文件夹操作的权限
https://my.oschina.net/cqyj/blog/1796047 在root用户登录的情况,赋予opt目录给liuhai这个用户权限 示例代码: # 将目录/opt 及其下面的所有文件 ...
- Linux批量新建文件夹(大括号表达式的应用)
如果想要批量新建文件夹来存放照片,按照年份和月份,格式为YYYY-MM.可以使用下面命令批量新建: mkdir {2007..2009}-{01..12} 结果如下: 2007-01 2007-07 ...
- 报数问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位
n = int(input("请输入人数:")) list_p = list(range(1,n+1)) #将所有人放在一个数字里面 count = 0 #设置一个变量,用户计算报 ...
- 每天一个Linux命令:locate(19)
locate locate命令 让使用者可以很快速的搜寻档案系统内是否有指定的档案.其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中 ...
- Android逆向之旅---Android应用的汉化功能(修改SO中的字符串内容)
一.前言 今天我们继续来讲述逆向的知识,今天我们来讲什么呢?我们在前一篇文章中介绍了关于SO文件的格式,今天我们继续这个话题来看看如何修改SO文件中的内容,看一下我们研究的主题: 需求:想汉化一个Ap ...