使用spring的@Async异步执行方法

应用场景:

1、某些耗时较长的而用户不需要等待该方法的处理结果

2、某些耗时较长的方法,后面的程序不需要用到这个方法的处理结果时

 

在spring的配置文件中加入对异步执行的支持

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop" 
    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-4.0.xsd    
    http://www.springframework.org/schema/tx    
    http://www.springframework.org/schema/tx/spring-tx-4.0.xsd   
    http://www.springframework.org/schema/context   
    http://www.springframework.org/schema/context/spring-context-4.0.xsd   
    http://www.springframework.org/schema/mvc   
    http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
    http://www.springframework.org/schema/task
    http://www.springframework.org/schema/task/spring-task-4.0.xsd">

    <context:annotation-config />
    <!--扫描注解 -->
    <context:component-scan base-package="com.tf" />
    <!-- 支持异步方法执行 -->
    <task:annotation-driven /> 

使用方法

import org.springframework.scheduling.annotation.Async;

public class Test {
    
    @Async
    public static void testAsyncMethod(){
        try {
            //让程序暂停100秒,相当于执行一个很耗时的任务
            Thread.sleep(100000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

调用方法

public static void main(String[] args) {
    Test.testAsyncMethod();
    System.out.println("我已经执行了!");
}

 

 

posted @ 2014-05-13 11:12  自行车上的程序员  阅读(41627)  评论(0编辑  收藏  举报