`

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 boot中使用@Async实现异步调用任务

    本篇文章主要介绍了spring boot中使用@Async实现异步调用任务,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

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

    主要给大家介绍了关于Spring Boot利用@Async异步调用:使用Future及定义超时的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用spring boot具有一定的参考学习价值,需要的朋友可以参考下

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

    主要介绍了Spring @async方法如何添加注解实现异步调用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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

    主要给大家介绍了关于Spring Boot利用@Async如何实现异步调用:自定义线程池的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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

    在业务处理中,有些业务使用异步的方式更为合理,这篇文章主要介绍了Spring中@Async注解执行异步任务的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

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

    本篇文章主要介绍了spring boot 使用@Async实现异步调用方法,具有一定的参考价值,有兴趣的可以了解一下。

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

    主要给大家介绍了关于Spring Boot利用@Async异步调用:ThreadPoolTaskScheduler线程池的优雅关闭的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧

    Springboot启用async异步调用

    Springboot启用async异步调用Springboot启用async异步调用Springboot启用async异步调用

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

    主要介绍了深入理解Spring注解@Async解决异步调用问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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

    主要介绍了关于Spring注解@Async引发其他注解失效的解决,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

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

    在本篇文章里小编给大家分享的是关于Spring中@Async注解实现异步调详解内容,需要的朋友们可以学习下。

    深入理解spring boot异步调用方式@Async

    Spring为任务调度与异步方法执行提供了注解支持。通过在方法上设置@Async注解,可使得方法被异步调用。下面这篇文章主要给大家介绍了关于spring boot异步调用方式@Async的相关资料,需要的朋友可以参考下。

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

    主要介绍了Spring Boot异步调用@Async过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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

    “异步调用”对应的是“同步调用”,同步调用指程序按照定义顺序依次执行,每一行程序都必须等待上一行程序执行完成之后才能执行;异步调用指程序在顺序执行时,不等待异步调用的语句返回结果就执行后面的程序。

    Java多线程之定时任务 以及 SpringBoot多线程实现定时任务——异步任务

    1. SpringBoot 自定义线程池以及多线程间的异步调用(@Async、@EnableAsync) 2.Java多线程之定时任务 以及 SpringBoot多线程实现定时任务 3.@EnableScheduling 与 @Scheduled

    Spring Boot集成教程之异步调用Async

    在项目中,当访问其他人的接口较慢或者做耗时任务时,不想程序一直卡在耗时任务上,想程序能够并行执行,我们可以使用多线程来并行的处理任务,也可以使用spring提供的异步处理方式@Async。需要的朋友们下面来一起看...

    spring boot异步(Async)任务调度实现方法

    在没有使用spring boot之前,我们的做法是在配置文件中定义一个任务池,然后将@Async注解的任务丢到任务池中去执行,那么在spring boot中,怎么来实现异步任务的调用了,下面通过本文给大家讲解,需要的朋友参考下

    springboot学习

    chapter4-1-5:使用@Async实现异步调用:使用Future以及定义超时 日志管理 chapter4-2-1:默认日志的配置 chapter4-2-2:使用log4j记录日志 chapter4-2-3:对log4j进行多环境不同日志级别的控制 chapter4-2-4:使用...

    Spring Boot教程程序样例

    包括快速入门、工程配置、Web开发、数据访问、事务管理、@Scheduled创建定时任务、@Async实现异步调用、日志管理、安全管理、缓存支持、邮件发送、消息服务、Dubbo进行服务治理等

    spring-async:具有DeferredResult的异步REST调用

    Spring中的异步REST结果 大部分Spring Boot REST教程都应从基础知识入手。 但是,当您开始在生产中使用Spring Boot时,您很快就会发现,按照字母中的示例操作可能会导致性能问题。 在本文中,我将向您展示如何利用...

Global site tag (gtag.js) - Google Analytics