`
heipark
  • 浏览: 2094959 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用Spring @Async异步执行方法的笔记

    博客分类:
  • Java
 
阅读更多

测试代码:

 

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration(locations = { "/spring/*.xml" }) public class JobUtilsTest{ @Autowired private DaoService service; @Test public void testAsync() throws Exception { System.out.println("start" ); service.update(); // ★ 假设这个方法会比较耗时,需要异步执行 System.out.println("end"); Thread.sleep(3000); // 因为junit结束会结束jvm,所以让它等会异步线程 } }

 

 DaoService代码:

@Service
public class DaoService {
	@Async
	public void update() {
		try {
			Thread.sleep(2000);
			// do something
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println("operation complete.");
	}
}

 

applicationContext.xml

 

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:task="http://www.springframework.org/schema/task"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd
    http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd">

	<context:component-scan base-package="com.chinacache" />
 
	<task:annotation-driven />
	
</beans>

 

输出结果:

 

start
end
operation complete.

 

可以看出,输出不是顺序执行,说明异步调用成功了。

 

 

分享到:
评论

相关推荐

    spring-scheduling-sr:org.springframework.scheduling包源码阅读笔记,学习如何用好Java执行器(高级并发对象)-Spring Framework 3.2.10-源码包

    `@Async`用于标记一个方法为异步执行,而`@EnableAsync`则启用异步方法的支持。这两个注解配合使用,可以让开发者轻松地将方法转换为异步执行,提高系统的并行处理能力。 此外,`@Scheduled`注解用于定义定时任务,...

    Spring2.5、3.0、3.1轻松入门+中级+高级教程14合一

    `@Async`注解支持异步方法执行,增强了并发处理能力。Spring 3.0还引入了Portlet MVC,加强了与portlet应用的集成。 3. **Spring 3.1** 在Spring 3.0的基础上进行了优化和增强,其中最显著的是对资源处理的支持。`...

    线程学习实例和笔记

    8. **工具和框架**:在实际开发中,可以利用一些工具和框架来简化线程管理,例如Spring框架中的@Async注解,用于异步执行方法,提升应用性能。 9. **源码分析**:阅读和理解JDK中Thread类和其他相关类的源码,有助...

    spring-5.2.11.RELEASE-source-rhy:Spring源码笔记

    - 结合实际项目,探讨Spring框架在解决具体问题时的最佳实践,如使用 Profiles 进行环境配置,使用 @Async 实现异步任务,以及如何利用 Spring Security 提供安全防护。 通过深入学习Spring 5.2.11.RELEASE源码,...

    若依RuoYi框架剖析笔记,该笔记是在学习江南一点雨所录课程再结合自己的理解所写

    17、**Promise**:在Vue3中,Promise用于处理异步操作,与async/await配合构建更简洁的异步代码。 18、**Vue3与Vue2的差异**:对比Vue3和Vue2在模板语法、响应式系统、组件API等方面的改进。 19、**Vue3自定义插件...

    SpringMVC-lean:看透SpringMVC源码分析与实战笔记

    2. 异步处理:使用@Async注解实现Controller方法的异步执行,提高系统响应速度。 3. AOP切面编程:利用Spring的AOP功能,实现全局异常处理、事务管理等。 4. RESTful设计:遵循RESTful原则设计API,使服务更加清晰、...

    动吧项目笔记保存云端

    - 使用`@Async`注解配合`@EnableAsync`开启Spring的异步支持。 **BUG分析及解决套路:** - 定位问题:通过日志、调试等方式找到问题根源。 - 分析原因:理解出错逻辑,分析错误原因。 - 修复并验证:修改代码,测试...

    这是工作中我整理的C#笔记

    10. **异步编程**:C#引入了async和await关键字,支持异步编程模型,提高程序的响应性和性能,尤其是在I/O密集型任务中。 11. **委托与事件**:委托是C#中的类型,可以存储指向方法的引用。事件是基于委托的通信...

    DIG4503-Spring2021

    JavaScript是一种广泛使用的编程语言,主要用于Web开发,它允许在浏览器端执行代码,提供交互式的网页体验。JavaScript可以用于处理用户输入、动态更新内容、创建动画效果、实现Ajax(异步JavaScript和XML)通信,...

    基于JAVA开发的写笔记带后端小程序

    在这个项目中,开发者可能使用了Spring MVC或Spring Boot来构建RESTful API,这些API能接收前端小程序的请求,执行相应的业务逻辑,并返回数据。 3. **数据库管理**:为了存储用户的笔记信息,后端通常会连接到一个...

    1610年Spring2021年

    9. 并发与异步编程:C#提供了async/await关键字,使并发和异步编程变得更加简单和直观,这对于多线程和UI更新尤其重要。 10. .NET框架与.NET Core:.NET框架是C#的传统运行环境,而.NET Core是跨平台的现代化版本,...

    1610Spring2021

    6. **异步编程**:C# 5.0引入了异步编程模型,使用async和await关键字,使得编写非阻塞I/O操作变得简单。 7. **事件和委托**:C#支持事件处理,常用于用户界面编程,而委托是事件处理的基础,是一种类型安全的函数...

    Teaching-web-technologies-spring-2019-2020:核心PHP Web项目

    3. **JavaScript进阶**:深入理解DOM操作、事件处理、异步编程(Promise和async/await),以及可能涉及到的库和框架如jQuery。 4. **PHP7基础与进阶**:学习变量、控制结构、函数、类和对象,以及如何与MySQL数据库...

Global site tag (gtag.js) - Google Analytics