摘要:異步程序在順序執行時,不等待異步調用的語句返回結果就執行后面的程序當一個異步過程調用發出后,調用者不能立刻得到結果。
同步
程序按照定義順序依次執行,每一行程序都必須等待上一行程序執行完成之后才能執行,就是在發出一個功能調用時,在沒有得到結果之前,該調用就不返回。
異步程序在順序執行時,不等待異步調用的語句返回結果就執行后面的程序,當一個異步過程調用發出后,調用者不能立刻得到結果。
同步代碼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("主線程結束"); return "async"; } catch (InterruptedException e) { e.printStackTrace(); return "fail"; } }
瀏覽器中請求 http://localhost:8080/test
控制臺打印順序:
主線程開始
打印j循環
打印i循環
主線程結束
異步代碼在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循環
主線程結束
打印i循環
代碼: async
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/77551.html
摘要:異步處理方式調用之后,不返回任何數據。在有返回值的異步調用中,異步處理拋出異常,會直接拋出異常,異步任務結束,原有處理結束執行。 1.使用背景 在項目中,當訪問其他人的接口較慢或者做耗時任務時,不想程序一直卡在耗時任務上,想程序能夠并行執行,我們可以使用多線程來并行的處理任務,也可以使用spring提供的異步處理方式@Async。 2.異步處理方式 調用之后,不返回任何數據。 調用之...
摘要:定義異步方法,使用來返回異步調用的結果開始做任務一完成任務一,當前線程,耗時毫秒任務一完成開始做任務二完成任務二,當前線程,耗時毫秒任務二完成開始做任務三完成任務三,當前線程,耗時毫秒任務三完成調用執行異步回調異步回調結束調用結果開 定義異步方法,使用Future來返回異步調用的結果 @Async public Future firstTask() throws Int...
摘要:定義模擬耗時操作調用失敗調用成功調用執行順序循環循環調用成功代碼異步回調 定義ListenableFuture public void getListenableFuture() { ListenableFutureTask task = new ListenableFutureTask(new Callable() { @Override ...
摘要:最開始是使用的正常的普通方式去寫入,但是量太大了,所以就嘗試使用多線程來寫入。下面我們就來介紹一下怎么使用多線程進行導入。配置線程池我們需要創建一個類來設置線程池的各種配置。它可以使主線程一直等到所有的子線程執行完之后再執行。 前言: 最近在工作中需要將一大批數據導入到數據庫中,因為種種原因這些數據不能使用同步數據的方式來進行復制,而是提供了一批文本,文本里面有很多行url地址,需要的...
閱讀 3206·2021-11-25 09:43
閱讀 3211·2021-11-23 09:51
閱讀 3523·2019-08-30 13:08
閱讀 1576·2019-08-29 12:48
閱讀 3600·2019-08-29 12:26
閱讀 401·2019-08-28 18:16
閱讀 2568·2019-08-26 13:45
閱讀 2434·2019-08-26 12:15