我们知道异步比同步快很多,节省更多的时间,也会提高效率。因此这篇文章主要讲解Springboot2.x来整合异步任务。通过案例来体会异步任务的思想。

一、开发环境

名称版本
Idea2018专业版(已破解)
Maven4.0.0
SpringBoot2.2.2
jdk1.8

还是老样子,群里面的朋友提供了最新的破解码。需要的私聊。以下代码亲测成功。

二、代码实现

异步任务的实现说实话非常简单。

第一步:创建SpringbootAsyncTask项目

第二步:开启异步任务的开关

1@SpringBootApplication
2@EnableAsync//打开异步任务开关
3public class SpringbootasynctaskApplication {
4    public static void main(String[] args) {
5        SpringApplication.run
6        (SpringbootasynctaskApplication.class, args);
7    }
8}

只需要在启动类里面添加一个注解开关即可。

第三步:新建MyAsyncTask类

 1@Component
2public class MyAsyncTask {
3    @Async
4    public void task1() throws InterruptedException {
5        long start = System.currentTimeMillis();
6        Thread.sleep(1000);
7        long end = System.currentTimeMillis();
8        System.out.println("任务一耗时:"+ (end-start)+"毫秒");
9    }
10    //任务2,我们不添加注解,便于验证
11    public void task2() throws InterruptedException {
12        long start = System.currentTimeMillis();
13        Thread.sleep(2000);
14        long end = System.currentTimeMillis();
15        System.out.println("任务二耗时:"+ (end-start)+"毫秒");
16    }
17    //任务3,我们不添加注解,便于验证
18    public void task3() throws InterruptedException {
19        long start = System.currentTimeMillis();
20        Thread.sleep(3000);
21        long end = System.currentTimeMillis();
22        System.out.println("任务三耗时:"+ (end-start)+"毫秒");
23    }
24}

在这里定义了3个任务,但是只有在第一个任务方法上加了异步注解。这是为了便于我们的时间验证。

第四步:新建MyController类

 1@Controller
2public class MyController {
3    @Autowired
4    private MyAsyncTask asyncTask;
5    @GetMapping("/test")
6    public void test() throws InterruptedException {
7        long start = System.currentTimeMillis();
8        asyncTask.task1();
9        asyncTask.task2();
10        asyncTask.task3();
11        long end = System.currentTimeMillis();
12        System.out.println("任务全部完成,总耗时:"+(end-start)+"毫秒");
13    }
14}

这个类的功能很明显,就是调用了三个方法。

第五步:访问链接,测试一下

1任务一耗时:1000毫秒
2任务二耗时:2000毫秒
3任务三耗时:3001毫秒
4任务全部完成,总耗时:5011毫秒

我们发现三个任务加起来本来大致6秒,但是5秒就结束了,这是因为任务1是异步执行的,注意这里不是严格的3秒和5秒,这是因为虚拟机还做了一些其他的操作。

异步任务的应用场景非常多,比如说发送短信、发送邮件、消息推送、定时发布消息等等。不过一般结合其他的技术来实现我们的功能。这个实现起来非常的简单。


更多相关文章

  1. Springboot整合mybatis(注解而且能看明白版本)
  2. 扒一扒 @SpringBootApplication 注解背后的奥秘!
  3. 聊聊java中的注解
  4. java中的注解,真的很重要,别不会用了
  5. Mongodb 的ORM框架 Morphia 注解二 —————— @Id
  6. UNIX-LINUX编程实践教程->第八章->实例代码注解->写一个简单的sh
  7. 注解匹配表字段与实体字段
  8. 理解Java注解(java.lang.annotation)
  9. 实现基于注解(Annotation)的数据库框架(一)反射的基本了解

随机推荐

  1. Android 调用系统浏览器 出现activitynot
  2. 1、ListView自定义控件下拉刷新(一)
  3. android 测试简介
  4. Android应用程序安装过程源代码分析(4)
  5. Android 学习笔记--android――Notificat
  6. 解决 ButterKnife8.2.1 与 Dagger2.5 冲
  7. webview 底部被遮住
  8. Cocos2d-x权限问题
  9. Android 手机震动
  10. android SDK manager 无法获取更新版本列