@Async异步功能
@Async注解,可以实现异步处理的功能,它可以有返回值,或者直接在新线程时并行执行一个任务,对于异步来说,它的执行是有条件的,你需要把异步代码块放在单独的类
里,当spring在注入时,才不会相互影响,因为异步是一个比较特殊的代理。
异步入口
@EnableAsync
具体的异步方法
/*** 异常的类型应该和同步执行的类分开,这样在ioc建立时不会相互干扰*/
@Service
public class MessageService {@Asyncpublic void msg1() throws Exception {Thread.sleep(5000L);System.out.println("async1:" + LocalDateTime.now() +",id:" + Thread.currentThread().getId());}
}
上面代码中的异步,是一个没有返回值的,一般像发送消息可以采用这种方式。
带有返回值的异步
@Asyncpublic Future<String> asyncMethodWithReturnType() {System.out.println("Execute method asynchronously - "+ Thread.currentThread().getName());try {Thread.sleep(5000);return new AsyncResult<String>("hello world !!!!");} catch (InterruptedException e) {//}return null;}
这种会返回一个委托对象Future,我们如果希望得到它的返回时,需要在主程序中去监听它,就是写在循环,去等待它的返回结果。
Future<String> future = messageService.asyncMethodWithReturnType();while (true) { ///这里使用了循环判断,等待获取结果信息if (future.isDone()) { //判断是否执行完毕System.out.println("Result from asynchronous process - " + future.get());break;}System.out.println("Continue doing something else. ");System.out.println("main end:" + LocalDateTime.now() +",id:" + Thread.currentThread().getId());}
上面代码主程序在执行到异步方法时,由于遇到了while(true),所以会租塞,直到有返回结果为止。
@Async异步功能相关推荐
- 异步处理函数async_Spring @Async异步处理注释
异步处理函数async Spring @Async annotation allows us to create asynchronous methods in spring. Let's explo ...
- 使用@Async异步注解导致该Bean在循环依赖时启动报BeanCurrentlyInCreationException异常的根本原因分析,以及提供解决方案
前言 今天在自己工程中使用@Async的时候,碰到了一个问题:Spring循环依赖(circular reference)问题. 或许刚说到这,有的小伙伴就会大惊失色了.Spring不是解决了循环依赖 ...
- 在Grails 2.0中使用Servlet 3.0异步功能
上周,我与某人谈论了Grails 2中对Servlet 3.0异步功能的新支持,并意识到我对可用功能并不了解. 所以我想我会尝试一下并分享一些例子. 该文档对这个主题有些了解,因此首先介绍一些背景信息 ...
- async 异步编程的应用
async 异步编程的应用 1.为了解决node.js在实际项目中的异步特性,跳出回调大坑. 2.优雅的维护自己的代码. 3.更好的对自己的代码进行流程控制. async.waterfall 1.as ...
- Django 3.0 正式发布,开始支持异步功能
Django 3.0 发布了,此版本带来了一些新特性,其中最值得关注的应当是其开始支持异步功能. 此前我们报导过,有草案提出要让 Django 支持异步.聚集于 HTTP 中间件视图和 ORM,开发者 ...
- 笨笨图片批量抓取下载 V0.2 beta[C# | WinForm | 正则表达式 | HttpWebRequest | Async异步编程]...
一. 先贴一张图,这个界面就是程序的主界面了: 二. 部分代码说明(主要讲解异步分析和下载): 异步分析下载采取的策略是同时分析同时下载,即未等待数据全部分析完毕就开始把已经分析出来的 ...
- js:nodejs通过async异步提交事务数据
一,async异步编程 1,异步编程是指由于异步I/O等因素,无法同步获得执行结果时, 在回调函数中进行下一步操作的代码编写风格,常见的如setTimeout函数.ajax请求等等 waterfall ...
- ajax异步详解同步请求,ajax async异步请求和同步请求
ajax async异步请求和同步请求 ajax是指异步加载.这个异步是相对于页面来说的,页面不刷新就加载服务器数据.ajax中的请求又分为同步请求和异步请求,这里是相对于进程来说的,ajax异步请求 ...
- async异步注解和aspect切面注解等注解的原理
在我们使用spring框架的过程中,在很多时候我们会使用@async注解来异步执行某一些方法,提高系统的执行效率.今天我们来探讨下spring是如何完成这个功能的. 1.spring 在扫描bean的 ...
最新文章
- MSSQL 2012 拒绝了对对象 'extended_properties' (数据库 'mssqlsystemresource',架构 'sys')的 SELECT 权限...
- qzone.class.php,PHP实现QQ空间自动回复说说的方法
- gentoo linux mldonkey 问题解决
- python 中的*(星号)和**(双星号)简介
- CentOS6.7 安装hadoop2.7.5
- [ARC055D]隠された等差数列
- java浏览文件夹_一个用java实现简单的文件浏览器
- 计算机科技与技术对应岗位,计算机技术与软件专业技术资格名称及岗位基本任职条件...
- HowToDoInJava Spring 教程·翻译完成
- 第五篇、常用的SQL语句和函数介绍
- mybatis 之 parameterType=list
- 计算机显示u盘隐藏分区,Win10下U盘多分区启动盘被显示怎么隐藏方法
- office 2010 安装
- 伪装苹果android id,小心了,别被伪造的 iOS 系统弹窗骗走 Apple ID
- 电商平台后台管理系统--->系统详细设计(用户登录、商品管理模块)
- php程序员工具箱v0.6,php程序员工具箱官方版
- terser作为js代码压缩工具
- c语言中猜字母代码怎么打,C语言代码实现猜数字
- mysql 代理 mycat_使用MyCAT代理MySQL数据库
- 程序员如何轻松实现数据可视化?
热门文章
- python合并多个excel代码_Python脚本合并多个Excel文件
- 面试准备每日系列:计算机底层之并发编程(一)原子性、atomic、CAS、ABA、可见性、有序性、指令重排、volatile、内存屏障、缓存一致性、四核八线程
- CCF	201812-2小明放学
- 吴恩达机器学习作业5——偏差与方差
- 拆轮子系列--RxJava理解(三)--observeOn
- (四)Java中的多线程之间实现同步+多线程并发同步
- 第一:Postman安装及使用(超详细)
- c++新增加的一个概念称之为_新概念四册中的这个句子是对的吗?
- 第2章[2.1] 开发模式及快速测试方式
- SOA技术相关介绍(RPC, Web Service, REST,SOAP,JMI)