欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring中的異步方法@Async失效的原因詳解

 更新時間:2024年01月13日 09:10:24   作者:java架構(gòu)師-太陽  
這篇文章主要介紹了Spring中的異步方法@Async失效的原因詳解,@Async屬于異步注解,@Async放在方法上標識該方法為異步方法,異步是指進程不需要一直等待下去,而是繼續(xù)執(zhí)行下面的操作,不管其他進程的狀態(tài),需要的朋友可以參考下

Spring中的異步方法@Async失效的原因

1.沒有在配置類中開啟@EnableAsync注解,導致異步方法失效。

@Configuration
@EnableAsync // 開啟異步支持
public class AppConfig {
    // ...
}

2.異步方法必須要被其它類中的方法調(diào)用,如果在同一個類中調(diào)用,異步方法仍然是同步執(zhí)行的。

@Service
public class DemoService {
    @Async
    public void asyncMethod() {
        // ...
    }
    
    public void callAsyncMethod() {
        asyncMethod(); // 異步方法不會被異步執(zhí)行
    }
}

@Service
public class CallerService {
    @Autowired
    private DemoService demoService;
    
    public void callAsyncMethod() {
        demoService.asyncMethod(); // 異步方法會被異步執(zhí)行
    }
}

3.異步方法必須要在public方法中被調(diào)用,如果被同類中的private方法調(diào)用,異步方法仍然是同步執(zhí)行的。

@Service
public class DemoService {
    @Async
    public void asyncMethod() {
        // ...
    }
    
    public void callAsyncMethod() {
        privateMethod(); // 異步方法不會被異步執(zhí)行
    }
    
    private void privateMethod() {
        asyncMethod(); // 異步方法不會被異步執(zhí)行
    }
}

4.異步方法必須是非靜態(tài)方法,如果是靜態(tài)方法,異步方法仍然是同步執(zhí)行的。

@Service
public class DemoService {
    @Async
    public static void asyncMethod() {
        // ...
    }
    
    public void callAsyncMethod() {
        asyncMethod(); // 異步方法不會被異步執(zhí)行
    }
}

5.異步方法必須要有返回值,如果沒有返回值,異步方法仍然是同步執(zhí)行的。

@Service
public class DemoService {
    @Async
    public void asyncMethod() {
        // ...
    }
    
    @Async
    public Future<String> asyncMethodWithResult() {
        // ...
        return new AsyncResult<>("result");
    }
}

@Service
public class CallerService {
    @Autowired
    private DemoService demoService;
    
    public void callAsyncMethod() {
        demoService.asyncMethod(); // 異步方法不會被異步執(zhí)行
        Future<String> future = demoService.asyncMethodWithResult(); // 異步方法會被異步執(zhí)行
    }
}

到此這篇關(guān)于Spring中的異步方法@Async失效的原因詳解的文章就介紹到這了,更多相關(guān)Spring的@Async失效內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • springcloud gateway如何實現(xiàn)路由和負載均衡

    springcloud gateway如何實現(xiàn)路由和負載均衡

    這篇文章主要介紹了springcloud gateway如何實現(xiàn)路由和負載均衡的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 詳解Java的回調(diào)機制

    詳解Java的回調(diào)機制

    最近學習java,接觸到了回調(diào)機制(CallBack)。初識時感覺比較混亂,而且在網(wǎng)上搜索到的相關(guān)的講解,本文介紹了Java的回調(diào)機制,有興趣的同學可以了解一下
    2016-10-10
  • Java Swing JToggleButton開關(guān)按鈕的實現(xiàn)

    Java Swing JToggleButton開關(guān)按鈕的實現(xiàn)

    這篇文章主要介紹了Java Swing JToggleButton開關(guān)按鈕的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • RocketMQ重試機制及消息冪代碼實例解析

    RocketMQ重試機制及消息冪代碼實例解析

    這篇文章主要介紹了RocketMQ重試機制及消息冪代碼實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • Spring框架設(shè)值注入操作實戰(zhàn)案例分析

    Spring框架設(shè)值注入操作實戰(zhàn)案例分析

    這篇文章主要介紹了Spring框架設(shè)值注入操作,結(jié)合具體實例形式分析了spring框架設(shè)值注入相關(guān)實現(xiàn)與使用方法,需要的朋友可以參考下
    2019-11-11
  • 淺析Java?NIO?直接緩沖區(qū)和非直接緩沖區(qū)

    淺析Java?NIO?直接緩沖區(qū)和非直接緩沖區(qū)

    本篇文章主要為大家介紹了Java?NIO?中直接緩沖區(qū)和非直接緩沖區(qū)的定義以及使用流程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-11-11
  • 一文解決System.in關(guān)閉后無法再繼續(xù)使用流的問題

    一文解決System.in關(guān)閉后無法再繼續(xù)使用流的問題

    這篇文章主要給大家介紹如何解決System.in關(guān)閉后無法再繼續(xù)使用流的問題,文中有詳細的解決方法和代碼示例,具有一定的參考價值,需要的朋友可以參考下
    2023-07-07
  • 關(guān)于log4j2的異步日志輸出方式

    關(guān)于log4j2的異步日志輸出方式

    這篇文章主要介紹了關(guān)于log4j2的異步日志輸出方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • java集成kafka實例代碼

    java集成kafka實例代碼

    文章介紹了如何在Java項目中集成Apache Kafka以實現(xiàn)消息的生產(chǎn)和消費,通過添加Maven依賴、配置生產(chǎn)者和消費者、使用SpringBoot簡化集成以及控制消費者的啟動和停止,可以實現(xiàn)高效的消息處理
    2024-12-12
  • 詳解備忘錄模式及其在Java設(shè)計模式編程中的實現(xiàn)

    詳解備忘錄模式及其在Java設(shè)計模式編程中的實現(xiàn)

    這篇文章主要介紹了詳解備忘錄模式及其在Java設(shè)計模式編程中的實現(xiàn),備忘錄模式數(shù)據(jù)的存儲過程中應(yīng)當注意淺拷貝和深拷貝的問題,需要的朋友可以參考下
    2016-04-04

最新評論