使用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("我已經執行了!");
}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM