`

Spring @Async 异步任务调用

 
阅读更多

Spring @Async 异步任务调用

spring-4.0.3.RELEASE, quartz-2.2.1

1.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:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

	<import resource="applicationContext-task.xml"/>
	<context:component-scan base-package="com.jin" />
</beans>

 2.applicationContext-task.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:context="http://www.springframework.org/schema/context"
    xmlns:task="http://www.springframework.org/schema/task"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/task
        http://www.springframework.org/schema/task/spring-task.xsd">

	<task:annotation-driven executor="taskExecutor" scheduler="taskScheduler"/>
	<task:executor id="taskExecutor" pool-size="5"/>
	<task:scheduler id="taskScheduler" pool-size="10" />
</beans>

 3.异步执行方法:

package com.jin.service;

import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;

@Component
public class AsynTaskSample {
	@Async
	public void doSomething() throws Exception
	{
		Thread.sleep(5000L);
		System.out.println("begin Async doSomething is invoked!");
		Thread.sleep(5000L);
		System.out.println("end Async doSomething is invoked!");
	}
}

 4.调用异步方法

package com.jin.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class AsynTaskTest {
	@Autowired
	private AsynTaskSample asynTaskSample;
	
	public void service() throws Exception
	{
		System.out.println("start do some service!");
		asynTaskSample.doSomething();
		System.out.println("end do some service!");
	}
}

 5.测试

package com.jin;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.jin.service.AsynTaskTest;

public class ClientMain {
	public static void displayAllBean(ApplicationContext context)
	{
		String[] beans = context.getBeanDefinitionNames();
		
		for(String bean : beans)
			System.out.println(bean);
	}
	
	public static void main(String[] args) throws Exception {
		ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
		
		AsynTaskTest a = context.getBean(AsynTaskTest.class);
		a.service();
	}

}

 6.输出结果:并不按方法执行的顺序输出

start do some service!
end do some service!
begin Async doSomething is invoked!
end Async doSomething is invoked!

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    浅谈Spring @Async异步线程池用法总结

    本文主要介绍了Spring @Async异步线程池的用法总结,包括异步线程池的接口类、@Async定义异步任务、Spring开启异步配置等内容。 1. 异步线程池的接口类 Spring提供了多种异步线程池的接口类,包括TaskExecutor、...

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

    Spring @Async 方法如何添加注解实现异步调用 Spring 框架提供了 @Async 注解来实现异步调用,该注解可以在方法上添加,以使得方法被异步调用。下面我们将详细介绍 Spring @Async 方法如何添加注解实现异步调用。 ...

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

    在Spring Boot框架中,@Async注解是实现异步任务处理的关键工具,它允许开发者将耗时的操作从主线程中分离出来,以提高应用程序的响应速度。本文将深入探讨@Async的工作原理、配置方法以及使用场景,帮助你更好地...

    JAVA 中Spring的@Async用法总结

    JAVA 中Spring的@Async用法总结 在 Java 应用中,绝大多数情况下都是通过同步的方式来实现交互处理的...以上就是 Spring 中 @Async 的用法总结,通过使用 @Async 可以轻松地实现异步调用,提高系统的响应速度和性能。

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

    Spring Boot利用@Async实现异步调用:自定义线程池 Spring Boot是一个流行的Java框架,它提供了许多实用的特性来简化应用程序的开发。其中,异步调用是Spring Boot中的一个重要特性,它允许开发者将一些耗时的任务...

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

    总的来说,`@Async`使得在Spring Boot中实现异步调用变得简单而高效,能够优化应用性能,尤其适用于处理那些无需顺序执行且可能耗时的任务。通过合理配置线程池,我们可以更好地控制并发执行的行为,以适应不同场景...

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

    Spring Boot 框架提供了 @Async 注解来支持异步任务执行,该注解可以将方法调用转换为异步调用,从而提高应用程序的并发能力和响应速度。下面是关于 Spring Boot @Async 异步任务执行方法的详细知识点: 1. ...

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

    Spring中@Async注解执行异步任务的方法 在业务处理中,有些业务使用异步的方式更为合理。这篇文章主要介绍了Spring中@Async注解执行异步任务的方法。@Async注解是Spring提供的一个annotation,可以将方法异步化,...

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

    总结起来,通过`@Async`和`Future`,我们可以轻松地在Spring Boot中实现异步调用,同时利用`Future`的特性监控任务状态、取消任务或处理超时。这对于优化应用性能和提升用户体验至关重要。记得根据实际情况配置合适...

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

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

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

    下面将详细解释如何在Spring Boot中使用`@Async`实现异步调用,以及其背后的原理。 首先,要启用`@Async`注解的功能,需要在Spring Boot的主配置类上添加`@EnableAsync`注解。这会告诉Spring框架,你需要异步任务的...

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

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

    Springboot启用async异步调用

    在Spring Boot中,启用`async`异步调用是一项关键功能,它允许应用程序在处理请求时启动一个后台任务,而不必等待该任务完成。这在处理耗时操作时尤其有用,如大数据计算、发送电子邮件或文件上传等。下面将详细阐述...

    简述Springboot @Async 异步方法

    异步调用是指在不阻塞主线程的情况下执行高耗时方法。这种方式可以提高系统的响应速度和吞吐量。 常规异步 常规异步是通过开启新线程实现的。这种方式需要手动创建和管理线程,开发者需要关心线程的生命周期和同步...

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

    Spring中@Async注解实现异步调用详解 在Spring框架中,@Async注解是实现异步调用的一个重要机制。异步调用是指在程序执行过程中,不需要等待某个方法的执行结果,而是继续执行下一个方法。这种机制可以极大地提高...

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

    在高并发的Web应用中,提高接口的并发处理能力是至关重要的,而SpringBoot框架提供了一种简单有效的方法——使用`@Async`注解来实现异步调用,从而优化性能。本文将深入探讨什么是异步调用,以及如何在SpringBoot中...

    Spring Boot利用@Async异步调用:ThreadPoolTaskScheduler线程池的优雅关闭详解

    在Spring Boot应用中,使用`@Async`注解可以方便地实现异步任务,而`ThreadPoolTaskScheduler`作为Spring提供的一个任务调度器,允许我们创建一个定制化的线程池来处理这些异步任务。本文将深入探讨如何优雅地关闭`...

    Spring Async:实现异步调用示例.docx

    【Spring Async:实现异步调用示例】 在软件开发中,特别是在高并发场景下,异步调用是一个重要的优化手段。同步调用是传统的执行方式,它遵循线性顺序,每个方法调用必须等待前一个方法执行完毕才能继续。而异步...

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

    Spring 中异步注解 @Async 的使用、原理及使用时可能导致的问题及解决方法 @Async 注解是一种非常有用的spring 注解,它可以让被标注的方法异步执行,从而提高应用程序的性能和响应速度。但是,@Async 注解的使用也...

    Spring Boot异步调用@Async过程详解

    Spring Boot 异步调用 @Async 过程详解 Spring Boot 异步调用 @Async 过程详解是 Spring Boot 框架中的一种异步调用机制,通过使用 @Async 注解可以将方法异步执行,提高系统的并发性和响应速度。本文将详细介绍 ...

Global site tag (gtag.js) - Google Analytics