`
tjukk
  • 浏览: 45310 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

Spring @Async异步执行方法

阅读更多

测试代码:

 

Java代码  收藏代码
  1. <p>@RunWith(SpringJUnit4ClassRunner.class)</p>@ContextConfiguration(locations = { "/spring/*.xml" })  
  2. public class JobUtilsTest{  
  3.       
  4.     @Autowired  
  5.     private DaoService service;  
  6.   
  7.     @Test  
  8.     public void testAsync() throws Exception {  
  9.         System.out.println("start" );  
  10.         service.update(); // ★ 假设这个方法会比较耗时,需要异步执行  
  11.         System.out.println("end");  
  12.           
  13.           
  14.         Thread.sleep(3000); // 因为junit结束会结束jvm,所以让它等会异步线程  
  15.     }  
  16. }  

 

 DaoService代码:

Java代码  收藏代码
  1. @Service  
  2. public class DaoService {  
  3.     @Async  
  4.     public void update() {  
  5.         try {  
  6.             Thread.sleep(2000);  
  7.             // do something  
  8.         } catch (InterruptedException e) {  
  9.             e.printStackTrace();  
  10.         }  
  11.         System.out.println("operation complete.");  
  12.     }  
  13. }  

 

applicationContext.xml

 

 

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"  
  4.     xmlns:context="http://www.springframework.org/schema/context"  
  5.     xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:task="http://www.springframework.org/schema/task"  
  6.     xsi:schemaLocation="http://www.springframework.org/schema/beans   
  7.     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
  8.     http://www.springframework.org/schema/context   
  9.     http://www.springframework.org/schema/context/spring-context-3.0.xsd  
  10.     http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd">  
  11.   
  12.     <context:component-scan base-package="com.chinacache" />  
  13.    
  14.     <task:annotation-driven />  
  15.       
  16. </beans>  

 

输出结果:

 

start
end
operation complete.

 

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

分享到:
评论

相关推荐

    Spring @async方法如何添加注解实现异步调用

    当我们在方法上添加 @Async 注解时,Spring 将在执行该方法时异步执行该方法,而不是同步执行。这样可以提高系统的执行效率。 如何使用 @Async 注解 使用 @Async 注解非常简单, 只需要在方法上添加 @Async 注解...

    JAVA 中Spring的@Async用法总结

    这种方式可以返回一个 Future 对象,其中包含了异步执行的结果。需要注意的是,返回的数据类型为 Future 类型,其为一个接口。具体的结果类型为 AsyncResult,這個是需要注意的地方。 调用返回结果的异步方法 可以...

    Spring中@Async注解执行异步任务的方法

    这样,当我们调用这个方法时,Spring会将其异步执行,而不是阻塞主线程。 @Async注解是Spring提供的一个强大工具,可以帮助我们提高系统的性能和响应速度。在实际项目中,使用@Async注解可以使得系统更加高效和可靠...

    Spring Boot @Async 异步任务执行方法

    在上面的例子中,sayHello() 方法调用 sayHi() 方法时,sayHi() 方法不会异步执行。这是因为代理模式只能拦截代理的调用,而不能拦截同一个类中的方法调用。 Spring Boot @Async 异步任务执行方法提供了一种简单的...

    springboot中@Async异步调用注解的使用

    - 在方法上添加`@Async`后,该方法将在单独的线程中异步执行。例如: ```java @Async public Future&lt;String&gt; asyncTask() { // 耗时操作 return new AsyncResult("Task completed"); } ``` - 如果返回类型...

    关于Spring注解@Async引发其他注解失效的解决

    Spring 框架提供了多种注解来帮助开发者简化代码,例如 @Async 用于异步执行方法、@Transaction 用于事务管理等。但是,在使用这些注解时,可能会遇到一些问题,例如 @Async 注解引发其他注解失效的问题。 在文章中...

    Spring Boot利用@Async如何实现异步调用:自定义线程池

    在Spring Boot中,使用@Async注解可以将方法异步执行。@Async注解可以应用于方法上,使得该方法可以异步执行。例如: ```java @Async public void doTask() { // 异步执行的任务 } ``` 在上面的代码中,doTask()...

    简述Springboot @Async 异步方法

    Spring Boot @Async 异步方法是 Spring Boot 框架中的一种异步编程方式,允许开发者在不阻塞主线程的情况下执行高耗时方法。下面将详细介绍 Spring Boot @Async 异步方法的使用和原理。 什么是异步调用 异步调用是...

    Spring Boot利用@Async异步调用:使用Future及定义超时详解

    `@Async`是Spring提供的一个注解,用于标记一个方法为异步执行。当一个带有`@Async`的方法被调用时,Spring会创建一个新的线程来执行该方法,从而避免阻塞当前请求处理线程。这样,主线程可以继续处理其他任务,提高...

    spring boot中使用@Async实现异步调用任务

    2. 在需要异步执行的方法上添加`@Async`注解: ```java @Component public class Task1 { // ... (其他代码保持不变) @Async public void doTaskOne() throws Exception { // ... } @Async public void ...

    @scheduled任务调度使用详解及@scheduled与多线程和@Async异步任务结合使用

    Spring的`@Async`注解用于标记一个方法为异步执行,它与`@Scheduled`结合可以实现异步定时任务。首先,我们需要启用异步支持: ```java @Configuration @EnableAsync public class AsyncConfig implements ...

    关于Spring中@Async注解使用

    @Async 注解是 Spring 框架提供的一种异步执行方法的实现方式,从 Spring 3.0 版本开始提供。使用 @Async 注解可以将方法标识为异步方法,通过 SimpleAsyncTaskExecutor 执行,但不推荐使用这个默认线程池。 @Async...

    Spring @Async 的使用与实现的示例代码

    Spring @Async 是 Spring 框架中一个重要的异步处理机制,通过使用 @Async 注解可以将方法设置为异步执行,从而提高系统的响应速度和吞吐量。本文将详细介绍 Spring @Async 的使用和实现机制,并提供示例代码以供...

    spring boot 使用@Async实现异步调用方法

    `@Async`注解是Spring提供的一个功能,用于将一个方法标记为异步执行,使得该方法不会阻塞调用者,而是立即返回,从而实现并发执行。下面将详细解释如何在Spring Boot中使用`@Async`实现异步调用,以及其背后的原理...

    Spring中异步注解@Async的使用、原理及使用时可能导致的问题及解决方法

    @Async 注解是一种非常有用的spring 注解,它可以让被标注的方法异步执行,从而提高应用程序的性能和响应速度。但是,@Async 注解的使用也存在一些问题和限制,例如循环依赖的问题。如果不了解 @Async 注解的使用...

    【java框架】SpringBoot(10) -- SpringBoot巧用 @Async提升API接口并发能力 .pdf

    然后,只需在需要异步执行的方法上添加`@Async`注解,如: ```java @Component public class Task { @Async public void doTaskOne() throws Exception {...} @Async public void doTaskTwo() throws Exception...

    深入理解Spring注解@Async解决异步调用问题

    深入理解Spring注解@Async解决异步调用问题 本文将详细介绍Spring框架中的@Async注解,并深入理解其在解决异步调用问题中的应用。通过示例代码和详细的解释,帮助读者更好地理解@Async的使用和原理。 一、异步调用...

    Spring中@Async注解实现异步调详解

    在实际开发中,@Async注解可以广泛应用于各种异步场景,例如异步发送邮件、异步处理大数据、异步执行长时间的计算任务等等。使用@Async注解可以使得程序更加灵活、高效和可靠。 需要注意的是,@Async注解只能在...

    Springboot启用async异步调用

    接下来,我们需要定义一个异步服务类,其中包含我们想要异步执行的方法。这些方法应带有`@Async`注解。例如,我们可以创建一个名为`AsyncService`的类: ```java @Service public class AsyncService { @Async ...

    Spring Boot Async异步执行任务过程详解

    Spring Boot Async异步执行任务过程详解 Spring Boot Async异步执行任务过程详解主要介绍了Spring Boot中异步执行任务的过程,通过示例代码介绍了非常详细,对大家的学习或者工作具有一定的参考学习价值。 一、...

Global site tag (gtag.js) - Google Analytics