成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

springboot 異步調(diào)用

weij / 436人閱讀

摘要:異步程序在順序執(zhí)行時,不等待異步調(diào)用的語句返回結(jié)果就執(zhí)行后面的程序當(dāng)一個異步過程調(diào)用發(fā)出后,調(diào)用者不能立刻得到結(jié)果。

同步

程序按照定義順序依次執(zhí)行,每一行程序都必須等待上一行程序執(zhí)行完成之后才能執(zhí)行,就是在發(fā)出一個功能調(diào)用時,在沒有得到結(jié)果之前,該調(diào)用就不返回。

異步

程序在順序執(zhí)行時,不等待異步調(diào)用的語句返回結(jié)果就執(zhí)行后面的程序,當(dāng)一個異步過程調(diào)用發(fā)出后,調(diào)用者不能立刻得到結(jié)果。

同步代碼

Service層:

public void test() throws InterruptedException {
       Thread.sleep(2000);
       for (int i = 0; i < 1000; i++) {
           System.out.println("i = " + i);
       }
   }

Controller層:

   @GetMapping("test")
   public String test() {
       try {
           Thread.sleep(1000);
           System.out.println("主線程開始");
           for (int j = 0; j < 100; j++) {
               System.out.println("j = " + j);
           }
           asyncService.test();
           System.out.println("主線程結(jié)束");
           return "async";
       } catch (InterruptedException e) {
           e.printStackTrace();
           return "fail";
       }
   }

瀏覽器中請求 http://localhost:8080/test
控制臺打印順序:

主線程開始

打印j循環(huán)

打印i循環(huán)

主線程結(jié)束

異步代碼

在Service層的test方法上加上@Async注解,同時為了是異步生效在啟動類上加上@EnableAsync注解
Service層:

   @Async
   public void test() throws InterruptedException {
       Thread.sleep(2000);
       for (int i = 0; i < 1000; i++) {
           System.out.println("i = " + i);
       }
   }

Controller不變,啟動類加上@EnableAsync

@SpringBootApplication
@EnableAsync
public class AsyncApplication {
    public static void main(String[] args) {
        SpringApplication.run(AsyncApplication.class, args);
    }
}

再次請求打印順序如下:

主線程開始

打印j循環(huán)

主線程結(jié)束

打印i循環(huán)

代碼: async

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/77551.html

相關(guān)文章

  • springboot異步調(diào)用@Async

    摘要:異步處理方式調(diào)用之后,不返回任何數(shù)據(jù)。在有返回值的異步調(diào)用中,異步處理拋出異常,會直接拋出異常,異步任務(wù)結(jié)束,原有處理結(jié)束執(zhí)行。 1.使用背景 在項目中,當(dāng)訪問其他人的接口較慢或者做耗時任務(wù)時,不想程序一直卡在耗時任務(wù)上,想程序能夠并行執(zhí)行,我們可以使用多線程來并行的處理任務(wù),也可以使用spring提供的異步處理方式@Async。 2.異步處理方式 調(diào)用之后,不返回任何數(shù)據(jù)。 調(diào)用之...

    gityuan 評論0 收藏0
  • springboot 異步回調(diào)

    摘要:定義異步方法,使用來返回異步調(diào)用的結(jié)果開始做任務(wù)一完成任務(wù)一,當(dāng)前線程,耗時毫秒任務(wù)一完成開始做任務(wù)二完成任務(wù)二,當(dāng)前線程,耗時毫秒任務(wù)二完成開始做任務(wù)三完成任務(wù)三,當(dāng)前線程,耗時毫秒任務(wù)三完成調(diào)用執(zhí)行異步回調(diào)異步回調(diào)結(jié)束調(diào)用結(jié)果開 定義異步方法,使用Future來返回異步調(diào)用的結(jié)果 @Async public Future firstTask() throws Int...

    BingqiChen 評論0 收藏0
  • springboot ListenableFuture 異步回調(diào)

    摘要:定義模擬耗時操作調(diào)用失敗調(diào)用成功調(diào)用執(zhí)行順序循環(huán)循環(huán)調(diào)用成功代碼異步回調(diào) 定義ListenableFuture public void getListenableFuture() { ListenableFutureTask task = new ListenableFutureTask(new Callable() { @Override ...

    caikeal 評論0 收藏0
  • springboot配置線程池使用多線程插入數(shù)據(jù)

    摘要:最開始是使用的正常的普通方式去寫入,但是量太大了,所以就嘗試使用多線程來寫入。下面我們就來介紹一下怎么使用多線程進行導(dǎo)入。配置線程池我們需要創(chuàng)建一個類來設(shè)置線程池的各種配置。它可以使主線程一直等到所有的子線程執(zhí)行完之后再執(zhí)行。 前言: 最近在工作中需要將一大批數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫中,因為種種原因這些數(shù)據(jù)不能使用同步數(shù)據(jù)的方式來進行復(fù)制,而是提供了一批文本,文本里面有很多行url地址,需要的...

    wenshi11019 評論0 收藏0

發(fā)表評論

0條評論

weij

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<