SpringBoot非官方教程 | 第二十三篇: 异步方法
来源:互联网 发布:访客网络限速到多少 编辑:程序博客网 时间:2024/05/21 10:27
版权声明:本文为博主原创文章,欢迎转载,转载请注明作者、原文超链接 ,博主地址:http://blog.csdn.net/forezp。
转载请标明出处:
http://blog.csdn.net/forezp/article/details/71024169
本文出自方志朋的博客
这篇文章主要介绍在springboot 使用异步方法,去请求github api.
创建工程
在pom文件引入相关依赖:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
创建一个接收数据的实体:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
创建一个请求的 githib的service:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
通过,RestTemplate去请求,另外加上类@Async 表明是一个异步任务。
开启异步任务:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
通过@EnableAsync开启异步任务;并且配置AsyncConfigurerSupport,比如最大的线程池为2.
测试
测试代码如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
启动程序,控制台会打印:
2017-04-30 13:11:10.351 INFO 1511 — [ GithubLookup-1] com.forezp.service.GitHubLookupService : Looking up PivotalSoftware
2017-04-30 13:11:10.351 INFO 1511 — [ GithubLookup-2] com.forezp.service.GitHubLookupService : Looking up CloudFoundry
2017-04-30 13:11:13.144 INFO 1511 — [ GithubLookup-2] com.forezp.service.GitHubLookupService : Looking up Spring-Projects
耗时:3908
分析:可以卡的前面2个方法分别在GithubLookup-1 和GithubLookup-2执行,第三个在GithubLookup-2执行,注意因为在配置线程池的时候最大线程为2.如果你把线程池的个数为3的时候,耗时减少。
如果去掉@Async,你会发现,执行这三个方法都在main线程中执行。耗时总结,如下:
2017-04-30 13:13:00.934 INFO 1527 — [ main] com.forezp.service.GitHubLookupService : Looking up PivotalSoftware
2017-04-30 13:13:03.571 INFO 1527 — [ main] com.forezp.service.GitHubLookupService : Looking up CloudFoundry
2017-04-30 13:13:04.865 INFO 1527 — [ main] com.forezp.service.GitHubLookupService : Looking up Spring-Projects
耗时:5261
通过这一个小的栗子,你应该对异步任务有了一定的了解。
参考资料
https://spring.io/guides/gs/async-method/
源码下载
https://github.com/forezp/SpringBootLearning
优秀文章推荐:
- 更多springboot 教程:springBoot非官方教程 | 文章汇总
- 更多springcoud 教程:史上最简单的 SpringCloud 教程 | 文章汇总
- SpringBoot非官方教程 | 第二十三篇: 异步方法
- SpringBoot非官方教程 | 第二十三篇: 异步方法
- SpringBoot非官方教程 | 第二十三篇: 异步方法
- SpringBoot非官方教程 | 第二十三篇: 异步方法
- SpringBoot非官方教程 | 第十七篇:上传文件
- SpringBoot非官方教程 | 第十七篇:上传文件
- SpringBoot非官方教程 | 第十七篇:上传文件
- SpringBoot非官方教程 | 第十七篇:上传文件
- SpringBoot非官方教程 | 第二十五篇:2小时学会springboot
- SpringBoot非官方教程 | 第三篇:SpringBoot用JdbcTemplates访问Mysql
- SpringBoot非官方教程 | 第四篇:SpringBoot 整合JPA
- SpringBoot非官方教程 | 第五篇:springboot整合 beatlsql
- SpringBoot非官方教程 | 第六篇:springboot整合mybatis
- SpringBoot非官方教程 | 第七篇:springboot开启声明式事务
- SpringBoot非官方教程 | 第八篇:springboot整合mongodb
- SpringBoot非官方教程 | 第九篇: springboot整合Redis
- SpringBoot非官方教程 | 第十二篇:springboot集成apidoc
- SpringBoot非官方教程 | 第十三篇:springboot集成spring cache
- kotlin开发Android入门篇六Lambda与高级函数
- python——日期输出格式化
- 写一个宏可以将一个数字的奇数位和偶数位交换。
- EXE程序添加为windows服务
- POJ 1260 简单dp问题 Pearls
- SpringBoot非官方教程 | 第二十三篇: 异步方法
- oracle----sql查询(一)
- ajax基础内容
- 459. Repeated Substring Pattern
- GO语言学习日记(六)常量的赋值
- windows端安装maven
- Lua 关键字
- HDU2021
- 详细解读jwt