`
snrqtdhuqf
  • 浏览: 79310 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

spring异步方法调用实例

    博客分类:
  • Java
 
阅读更多

spring-async-test.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/task http://www.springframework.org/schema/task/spring-task-4.0.xsd
		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-3.2.xsd">

	<task:executor id="myExecutor" pool-size="10"/>
	<task:annotation-driven executor="myExecutor"/>
	
	<bean id="testAsync" class="com.test.AsyncClass"/>
	
</beans>

 

java测试代码

package com.test;

import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.AsyncResult;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:spring-async-test.xml")
public class AsyncTest {

	@Autowired
	private AsyncClass asyncClass;
	
	@Test
	public void test1() throws InterruptedException {
		System.out.println("1");
		asyncClass.asyncMethod();
		System.out.println("2");
		Thread.sleep(10000);
	}
	
	@Test
	public void test2() throws InterruptedException, ExecutionException, TimeoutException {
		System.out.println("1");
		Future<String> future = asyncClass.asyncMethod("3");
		System.out.println("2");
		System.out.println(future.get(6, TimeUnit.SECONDS));//在6秒内没返回值抛出异常
		Thread.sleep(10000);
	}
}

class AsyncClass {
	
	@Async
	public void asyncMethod() {
		try {
			Thread.sleep(5000);
		} catch (InterruptedException e) {
		}
		System.out.println("3");
	}
	
	@Async
	public Future<String> asyncMethod(String s) {
		
		try {
			Thread.sleep(5000);
		} catch (InterruptedException e) {
		}
		return new AsyncResult<String>(s);
	}
}

 

 

分享到:
评论

相关推荐

    tomcat spring jms 异步消息传递入门实例

    本教程将带你逐步了解如何利用Tomcat、Spring和JMS(Java Message Service)构建一个简单的异步消息传递入门实例。 首先,让我们来理解一下核心组件: 1. **Tomcat**:这是一个流行的开源Java Servlet容器,用于...

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

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

    SpringBoot异步调用方法实现场景代码实例

    SpringBoot异步调用方法实现场景代码实例 在项目开发中,异步调用方法的实现场景非常常见,特别是在计算密集型或IO密集型的操作中。异步调用可以大大提高系统的性能和响应速度。下面我们将详细介绍SpringBoot异步...

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

    在上面的代码中,我们使用 SpringBootTest 来测试异步调用,我们首先注入了 AsyncTask 实例,然后使用 asyncTask.taskOne()、asyncTask.taskTwo() 和 asyncTask.taskThree() 方法来异步调用三个任务。最后,我们使用...

    spring的quartz使用实例

    以下是对Spring整合Quartz使用实例的详细说明: 1. **Quartz简介** Quartz是一个强大的、完全开源的作业调度框架,它支持复杂的调度策略,如按日期、时间间隔或自定义表达式执行。Quartz可以在Java应用中作为独立...

    Java web spring异步方法实现步骤解析

    在其他类中,可以通过注入 DevicesEditLogService 实例,并调用其成员方法,示例代码如下: ```java @Service public class MyService { @Autowired private DevicesEditLogService devicesEditLogService; ...

    spring jms tomcat 异步消息传递入门实例

    在这个"spring jms tomcat 异步消息传递入门实例"中,我们将探讨如何在Spring框架下利用JMS和Tomcat实现异步消息传递,以提高系统性能和可扩展性。 首先,理解异步消息传递的概念至关重要。在同步通信中,发送方...

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

    在Spring Boot中,异步调用是一种提升应用性能的有效手段,尤其在处理耗时操作时。`@Async`注解是Spring提供的一个功能,用于将一个方法标记为异步执行,使得该方法不会阻塞调用者,而是立即返回,从而实现并发执行...

    java代码实现异步调用代码

    在Java编程中,异步调用是一种非常重要的技术,它允许程序在等待某个耗时操作完成时继续执行其他任务,从而提高系统效率和响应性。本文将深入探讨如何使用Java来实现异步调用,以及它在后端开发中的应用。 1. **...

    SpringBoot异步方法捕捉异常详解

    在Spring Boot应用中,异步方法的使用可以显著提高应用程序的性能,因为它允许非阻塞操作,让主线程不等待耗时的操作完成。然而,当这些异步方法抛出异常时,传统的异常处理机制不再适用,因为它们发生在不同的线程...

    dwr+spring实例

    同时,我们还可以通过缓存策略和异步调用来优化DWR的性能。 6. **异常处理**: 当服务器端发生错误时,DWR可以将异常信息转换为JavaScript错误对象,使得客户端能够捕获并处理这些异常。这对于提供良好的用户体验...

    Spring3.0定时任务简单实例web工程

    这可以通过在`ContextLoaderListener`或`DispatcherServlet`的初始化方法中调用`TaskScheduler`的`schedule`方法完成。 最后,确保在MyEclipse中正确导入项目,包括所有依赖库,如Spring、Spring Web等。项目的结构...

    简述Springboot @Async 异步方法

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

    spring cloud feign demo

    - **Feign 实例化**:Feign 会基于接口创建一个动态代理类,当调用接口方法时,实际执行的是 Feign 的逻辑,将请求发送到指定的服务。 3. **Feign 配置** - **服务发现**:通过 `@FeignClient` 注解指定服务提供...

    spring mvc demo实例

    3. **HandlerAdapter**:调用找到的处理器方法,处理请求。 4. **ModelAndView**:处理器方法执行完毕后,可能返回一个包含模型数据和视图名的对象。 5. **ViewResolver**:解析视图名,确定实际的视图对象。 6. **...

    spring_mvc代码_spring_mvc代码实例_

    14. **异步处理**:使用`@Async`和`@EnableAsync`可以实现控制器方法的异步执行。 15. **国际化**:通过`ResourceBundleMessageSource`和`AcceptHeaderLocaleResolver`,可以实现动态切换语言和消息国际化。 16. *...

    Spring DWR配置实例

    DWR通过在浏览器端执行服务器端的方法,实现了Ajax(异步JavaScript和XML)的应用,极大地提高了用户体验。 标题“Spring DWR配置实例”表明我们将探讨如何在Spring框架中集成并配置DWR。以下是一些关键的配置步骤...

    struts2 spring hibernate ssh整合实例

    总结起来,"struts2 spring hibernate ssh整合实例"是一个综合性的项目,涵盖了Java Web开发中的多个关键点,包括MVC框架的使用、服务层的管理、数据持久化、前端与后端的异步通信以及文件处理等。这个实例为开发者...

    Spring+ActiveMQ整合实例代码工程

    Spring会自动管理这些监听器,并在有新消息到达时调用其`onMessage()`方法。例如: ```java public class MyMessageListener implements MessageListener { @Override public void onMessage(Message message) {...

    Springcloud基于OpenFeign实现服务调用代码实例

    SpringCloud 基于 OpenFeign 实现服务调用代码实例 在微服务架构中,服务调用是必不可少的一部分。在 SpringCloud 中,我们可以使用 OpenFeign 来实现服务调用。本文将详细介绍如何使用 OpenFeign 实现服务调用代码...

Global site tag (gtag.js) - Google Analytics