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

Java中的@Async異步功能詳解

 更新時(shí)間:2023年11月10日 08:32:11   作者:huayang183  
這篇文章主要介紹了Java中的@Async異步功能詳解,@Async注解,可以實(shí)現(xiàn)異步處理的功能,它可以有返回值,或者直接在新線程時(shí)并行執(zhí)行一個(gè)任務(wù),對(duì)于異步來(lái)說(shuō),它的執(zhí)行是有條件的,你需要把異步代碼塊放在單獨(dú)的類里,需要的朋友可以參考下

Java中的@Async異步功能詳解

@Async注解,可以實(shí)現(xiàn)異步處理的功能,它可以有返回值,或者直接在新線程時(shí)并行執(zhí)行一個(gè)任務(wù),對(duì)于異步來(lái)說(shuō),它的執(zhí)行是有條件的,你需要把異步代碼塊放在單獨(dú)的類里,當(dāng)spring在注入時(shí),才不會(huì)相互影響,因?yàn)楫惒绞且粋€(gè)比較特殊的代理。

異步入口

@EnableAsync

具體的異步方法

/**
 * 異常的類型應(yīng)該和同步執(zhí)行的類分開(kāi),這樣在ioc建立時(shí)不會(huì)相互干擾
 */
@Service
public class MessageService {
  @Async
  public void msg1() throws Exception {
 
    Thread.sleep(5000L);
    System.out.println("async1:" + LocalDateTime.now() +
        ",id:" + Thread.currentThread().getId());
  }
}

上面代碼中的異步,是一個(gè)沒(méi)有返回值的,一般像發(fā)送消息可以采用這種方式。

帶有返回值的異步

@Async
  public Future<String> asyncMethodWithReturnType() {
    System.out.println("Execute method asynchronously - "
        + Thread.currentThread().getName());
    try {
      Thread.sleep(5000);
      return new AsyncResult<String>("hello world !!!!");
    } catch (InterruptedException e) {
      //
    }
    return null;
  }

這種會(huì)返回一個(gè)委托對(duì)象Future,我們?nèi)绻M玫剿姆祷貢r(shí),需要在主程序中去監(jiān)聽(tīng)它,就是寫(xiě)在循環(huán),去等待它的返回結(jié)果。

Future<String> future = messageService.asyncMethodWithReturnType();
 
    while (true) { ///這里使用了循環(huán)判斷,等待獲取結(jié)果信息
      if (future.isDone()) { //判斷是否執(zhí)行完畢
        System.out.println("Result from asynchronous process - " + future.get());
        break;
      }
      System.out.println("Continue doing something else. ");
      System.out.println("main end:" + LocalDateTime.now() +
          ",id:" + Thread.currentThread().getId());
 
    }

上面代碼主程序在執(zhí)行到異步方法時(shí),由于遇到了while(true),所以會(huì)租塞,直到有返回結(jié)果為止。

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

相關(guān)文章

  • Java中類的初始化和實(shí)例化區(qū)別詳解

    Java中類的初始化和實(shí)例化區(qū)別詳解

    這篇文章主要介紹了Java中類的初始化和實(shí)例化區(qū)別詳解,類的初始化<BR>是完成程序執(zhí)行前的準(zhǔn)備工作,類的實(shí)例化(實(shí)例化對(duì)象)是指創(chuàng)建一個(gè)對(duì)象的過(guò)程,需要的朋友可以參考下
    2023-08-08
  • java中的executeQuery()方法使用

    java中的executeQuery()方法使用

    這篇文章主要介紹了java中的executeQuery()方法使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java多線程之Disruptor入門(mén)

    Java多線程之Disruptor入門(mén)

    這篇文章主要介紹了Java多線程之Disruptor入門(mén),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java多線程的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • Java_Spring之XML?的?AOP?配置

    Java_Spring之XML?的?AOP?配置

    這篇文章主要介紹了Java_Spring中基于XML的AOP配置,上篇講到的是基于注解的AOP配置,對(duì)XML感興趣的同學(xué)可以參考閱讀本文
    2023-04-04
  • IDEA中Java出現(xiàn)無(wú)效的源發(fā)行版錯(cuò)誤的解決辦法

    IDEA中Java出現(xiàn)無(wú)效的源發(fā)行版錯(cuò)誤的解決辦法

    這篇文章主要給大家介紹了關(guān)于IDEA中Java出現(xiàn)無(wú)效的源發(fā)行版錯(cuò)誤的解決辦法,IDEA中Java出現(xiàn)?效的源發(fā)?版解決辦法出現(xiàn)該問(wèn)題的原因是項(xiàng)?Project當(dāng)中的jdk與電腦當(dāng)中的jdk版本不?致造成的,需要的朋友可以參考下
    2023-10-10
  • 基于java使用JavaMail發(fā)送郵件

    基于java使用JavaMail發(fā)送郵件

    這篇文章主要介紹了基于java使用JavaMail發(fā)送郵件 ,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。
    2016-12-12
  • 最新評(píng)論