SpringBoot2.x整合定时任务和异步任务处理

一.项目环境

  springboot2.x本身已经集成了定时任务模块和异步任务,可以直接使用

二.springboot常用定时任务配置

  1.在启动类上使用注解@EnableScheduling开启定时任务,使用@EnableAsync开启异步任务

  1. @SpringBootApplication //一个注解顶下面3个
  2. @EnableScheduling //开启定时任务
  3. @EnableAsync //开启异步任务
  4. public class XdclassApplication {
  5.  
  6. public static void main(String[] args) {
  7. SpringApplication.run(XdclassApplication.class, args);
  8. }
  9. }

  2.使用注解@Schedule声明这是一个定时任务,Springboot启动会扫描到该注解并标记为定时任务

  1. @Component
  2. public class TestTask {
  3.  
  4. @Scheduled(cron="*/1 * * * * *")
  5. public void sum2(){
  6. System.out.println("cron 每秒 当前时间:"+new Date());
  7. }
  8.  
  9. }

  3.使用@Asyn声明这是一个异步任务的方法,如果在类上使用该注解,则该类下所有方法都是异步任务的方法

  1. @Component
  2. @Async
  3. public class AsyncTask {
  4.  
  5. public void task1() throws InterruptedException{
  6. long begin = System.currentTimeMillis();
  7. Thread.sleep(1000L);
  8. long end = System.currentTimeMillis();
  9. System.out.println("任务1耗时="+(end-begin));
  10. }
  11.  
  12. public void task2() throws InterruptedException{
  13. long begin = System.currentTimeMillis();
  14. Thread.sleep(2000L);
  15. long end = System.currentTimeMillis();
  16. System.out.println("任务2耗时="+(end-begin));
  17. }
  18.  
  19. public void task3() throws InterruptedException{
  20. long begin = System.currentTimeMillis();
  21. Thread.sleep(3000L);
  22. long end = System.currentTimeMillis();
  23. System.out.println("任务3耗时="+(end-begin));
  24. }
  25.  
  26. //获取异步结果
  27.  
  28. public Future<String> task4() throws InterruptedException{
  29. long begin = System.currentTimeMillis();
  30. Thread.sleep(2000L);
  31. long end = System.currentTimeMillis();
  32. System.out.println("任务4耗时="+(end-begin));
  33. return new AsyncResult<String>("任务4");
  34. }
  35.  
  36. public Future<String> task5() throws InterruptedException{
  37. long begin = System.currentTimeMillis();
  38. Thread.sleep(3000L);
  39. long end = System.currentTimeMillis();
  40. System.out.println("任务5耗时="+(end-begin));
  41. return new AsyncResult<String>("任务5");
  42. }
  43.  
  44. public Future<String> task6() throws InterruptedException{
  45. long begin = System.currentTimeMillis();
  46. Thread.sleep(1000L);
  47. long end = System.currentTimeMillis();
  48. System.out.println("任务6耗时="+(end-begin));
  49. return new AsyncResult<String>("任务6");
  50. }
  51. }

  测试

  1. @RestController
  2. @RequestMapping("/api/v1")
  3. public class UserController {
  4.  
  5. @Autowired
  6. private AsyncTask task;
  7.  
  8. @GetMapping("async_task")
  9. public JsonData exeTask() throws InterruptedException{
  10.  
  11. long begin = System.currentTimeMillis();
  12.  
  13. // task.task1();
  14. // task.task2();
  15. // task.task3();
  16. Future<String> task4 = task.task4();
  17. Future<String> task5 = task.task5();
  18. Future<String> task6 = task.task6();
  19. //这里死循环让主线程挂起,目的是为了计算其他异步任务的执行任务的耗时
  20. for(;;){
  21. if (task4.isDone() && task5.isDone() && task6.isDone()) {
  22. break;
  23. }
  24. }
  25. long end = System.currentTimeMillis();
  26.  
  27. long total = end-begin;
  28. System.out.println("执行总耗时="+total);
  29. return JsonData.buildSuccess(total);
  30. }
  31.  
  32. }

SpringBoot2.x整合定时任务和异步任务处理的更多相关文章

  1. 【SpringBoot】SpringBoot2.x整合定时任务和异步任务处理

    SpringBoot2.x整合定时任务和异步任务处理 一.项目环境 springboot2.x本身已经集成了定时任务模块和异步任务,可以直接使用 二.springboot常用定时任务配置 1.在启动类 ...

  2. 小D课堂 - 零基础入门SpringBoot2.X到实战_第10节 SpringBoot整合定时任务和异步任务处理_41、SpringBoot定时任务schedule讲解

    笔记 1.SpringBoot定时任务schedule讲解     简介:讲解什么是定时任务和常见定时任务区别 1.常见定时任务 Java自带的java.util.Timer类            ...

  3. SpringBoot整合定时任务和异步任务处理 3节课

    1.SpringBoot定时任务schedule讲解   定时任务应用场景: 简介:讲解什么是定时任务和常见定时任务区别 1.常见定时任务 Java自带的java.util.Timer类        ...

  4. SpringBoot整合定时任务和异步任务处理

    SpringBoot定时任务schedule讲解 简介:讲解什么是定时任务和常见定时任务区别 1.常见定时任务 Java自带的java.util.Timer类 timer:配置比较麻烦,时间延后问题, ...

  5. 【SpringBoot】整合定时任务和异步任务

    ========================10.SpringBoot整合定时任务和异步任务处理 =============================== 1.SpringBoot定时任务s ...

  6. SpringBoot整合全局异常处理&SpringBoot整合定时任务Task&SpringBoot整合异步任务

    ============整合全局异常=========== 1.整合web访问的全局异常 如果不做全局异常处理直接访问如果报错,页面会报错500错误,对于界面的显示非常不友好,因此需要做处理. 全局异 ...

  7. 【SpringBoot】息队列介绍和SpringBoot2.x整合RockketMQ、ActiveMQ

    ========================13.消息队列介绍和SpringBoot2.x整合RockketMQ.ActiveMQ ======================= 1.JMS介绍和 ...

  8. SpringBoot2.0 整合 QuartJob ,实现定时器实时管理

    一.QuartJob简介 1.一句话描述 Quartz是一个完全由java编写的开源作业调度框架,形式简易,功能强大. 2.核心API (1).Scheduler 代表一个 Quartz 的独立运行容 ...

  9. SpringBoot2.0 整合 Dubbo框架 ,实现RPC服务远程调用

    一.Dubbo框架简介 1.框架依赖 图例说明: 1)图中小方块 Protocol, Cluster, Proxy, Service, Container, Registry, Monitor 代表层 ...

随机推荐

  1. Python Web开发:使用Django框架创建HolleWorld项目

    开发环境搭建 Python环境安装 下载地址:https://www.python.org/downloads// Django安装 打开Windows CMD输入pip install django ...

  2. 微信小程序(4)--二维码窗口

    微信小程序二维码窗口: <view class="btn" bindtap="powerDrawer" data-statu="open&quo ...

  3. JVM分为哪些区,每一个区干嘛的?

    程序计数器PC 线程私有的 它可以看做是当前线程所执行的字节码的行号指示器 内存区域中唯一一个没有规定任何OutOfMemoryError的区域 Java虚拟机栈 线程私有的 每个方法在执行的同时都会 ...

  4. HTML5 canvas绘制图片

    demo.js window.onload=function() { createcanvas(); drawImage(); } function createcanvas() { var CANV ...

  5. BZOJ3038 上帝造题的七分钟

    Time Limit: 3 Sec Memory Limit: 128 MB Description XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. "第一分钟,X说, ...

  6. Linux 给用户 赋某个文件夹操作的权限

    https://my.oschina.net/cqyj/blog/1796047 在root用户登录的情况,赋予opt目录给liuhai这个用户权限 示例代码: # 将目录/opt 及其下面的所有文件 ...

  7. Linux批量新建文件夹(大括号表达式的应用)

    如果想要批量新建文件夹来存放照片,按照年份和月份,格式为YYYY-MM.可以使用下面命令批量新建: mkdir {2007..2009}-{01..12} 结果如下: 2007-01 2007-07 ...

  8. 报数问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位

    n = int(input("请输入人数:")) list_p = list(range(1,n+1)) #将所有人放在一个数字里面 count = 0 #设置一个变量,用户计算报 ...

  9. 每天一个Linux命令:locate(19)

    locate locate命令 让使用者可以很快速的搜寻档案系统内是否有指定的档案.其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中 ...

  10. Android逆向之旅---Android应用的汉化功能(修改SO中的字符串内容)

    一.前言 今天我们继续来讲述逆向的知识,今天我们来讲什么呢?我们在前一篇文章中介绍了关于SO文件的格式,今天我们继续这个话题来看看如何修改SO文件中的内容,看一下我们研究的主题: 需求:想汉化一个Ap ...