最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中的@Async異步功能詳解

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

Java中的@Async異步功能詳解

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

異步入口

@EnableAsync

具體的異步方法

/**
 * 異常的類型應(yīng)該和同步執(zhí)行的類分開,這樣在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è)沒有返回值的,一般像發(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)聽它,就是寫在循環(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)文章

  • SpringBoot實(shí)現(xiàn)PDF轉(zhuǎn)圖片的代碼示例

    SpringBoot實(shí)現(xiàn)PDF轉(zhuǎn)圖片的代碼示例

    在本文中,我們使用SpringBoot演示了如何將PDF文件轉(zhuǎn)換為一張或多張圖片,這些示例演示了如何使用Java編程語言與其他開源技術(shù)集成,以實(shí)現(xiàn)各種文件格式之間的轉(zhuǎn)換,感興趣的小伙伴跟著小編一起來看看吧
    2024-08-08
  • SpringBoot自動(dòng)裝配之Condition深入講解

    SpringBoot自動(dòng)裝配之Condition深入講解

    @Conditional表示僅當(dāng)所有指定條件都匹配時(shí),組件才有資格注冊(cè)。該@Conditional注釋可以在以下任一方式使用:作為任何@Bean方法的方法級(jí)注釋、作為任何類的直接或間接注釋的類型級(jí)別注釋@Component,包括@Configuration類、作為元注釋,目的是組成自定義構(gòu)造型注釋
    2023-01-01
  • SpringBoot超詳細(xì)深入講解底層原理

    SpringBoot超詳細(xì)深入講解底層原理

    我們知道springboot內(nèi)部是通過spring框架內(nèi)嵌Tomcat實(shí)現(xiàn)的,當(dāng)然也可以內(nèi)嵌jetty,undertow等等web框架;另外springboot還有一個(gè)特別重要的功能就是自動(dòng)裝配,這又是如何實(shí)現(xiàn)的呢
    2022-07-07
  • Spring Boot如何通過java -jar啟動(dòng)

    Spring Boot如何通過java -jar啟動(dòng)

    大家開發(fā)的基于Spring Boot 的應(yīng)用 ,jar形式, 發(fā)布的時(shí)候,絕大部分都是使用java -jar 啟動(dòng)。本文主要介紹了Spring Boot如何通過java -jar啟動(dòng),一起來了解一下
    2021-05-05
  • Spring MVC請(qǐng)求參數(shù)的傳遞方式

    Spring MVC請(qǐng)求參數(shù)的傳遞方式

    Spring MVC是一種基于Model-View-Controller(MVC)設(shè)計(jì)模式的輕量級(jí)Web框架,用于Java應(yīng)用程序的開發(fā),在處理HTTP請(qǐng)求時(shí),Spring MVC會(huì)涉及到請(qǐng)求參數(shù)的傳遞,本文給大家介紹了Spring MVC請(qǐng)求參數(shù)的傳遞方式,需要的朋友可以參考下
    2024-10-10
  • java并發(fā)編程_線程池的使用方法(詳解)

    java并發(fā)編程_線程池的使用方法(詳解)

    下面小編就為大家?guī)硪黄猨ava并發(fā)編程_線程池的使用方法(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05
  • SpringBoot中的@ApiModelProperty注解作用

    SpringBoot中的@ApiModelProperty注解作用

    這篇文章主要介紹了SpringBoot中的@ApiModelProperty注解作用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
    2022-01-01
  • Spring中的DeferredImportSelector實(shí)現(xiàn)詳解

    Spring中的DeferredImportSelector實(shí)現(xiàn)詳解

    這篇文章主要介紹了Spring中的DeferredImportSelector實(shí)現(xiàn)詳解,兩個(gè)官方的實(shí)現(xiàn)類AutoConfigurationImportSelector和ImportAutoConfigurationImportSelector都是Spring Boot后新增的實(shí)現(xiàn),需要的朋友可以參考下
    2024-01-01
  • java工廠實(shí)例BeanFactoryPostProcessor和BeanPostProcessor區(qū)別分析

    java工廠實(shí)例BeanFactoryPostProcessor和BeanPostProcessor區(qū)別分析

    這篇文章主要為大家介紹了BeanFactoryPostProcessor和BeanPostProcessor區(qū)別示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • JPA?@ManyToMany?報(bào)錯(cuò)StackOverflowError的解決

    JPA?@ManyToMany?報(bào)錯(cuò)StackOverflowError的解決

    這篇文章主要介紹了JPA?@ManyToMany?報(bào)錯(cuò)StackOverflowError的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12

最新評(píng)論

安新县| 建湖县| 察隅县| 霍州市| 封丘县| 宜章县| 乐东| 舒城县| 镶黄旗| 苗栗县| 神农架林区| 大兴区| 临高县| 鄯善县| 余干县| 依安县| 永德县| 泸溪县| 寿阳县| 根河市| 商洛市| 连城县| 上杭县| 饶平县| 苏尼特左旗| 仲巴县| 绥芬河市| 衢州市| 松滋市| 当雄县| 石棉县| 铜鼓县| 定州市| 重庆市| 稷山县| 射洪县| 永安市| 永福县| 彝良县| 连云港市| 措美县|