同步和異步的區別
同步:你執行了我再執行。
異步:你不執行我先跳過,等你執行了我再執行。
通俗舉例
同步:我大學有個室友袁大炮,我們都叫他炮哥。大學開始時炮哥很單純,和女生告白,在同一時間內只和一個女孩表白,
等人家姑娘拒絕他后才向另外一個女生表白,這就是我們所謂的同步,等上一個表白結束了才會開始追求另外一個女生。
異步:后來過了一段時間炮哥變渣了,他開始同時和多個女生表白,給一個姑娘表白不等姑娘回復就開始給另外一個姑娘表白,這就是我們所謂的異步。
同步和異步的優缺點
我們炮哥前后不同的行為來分析一下同步與異步的優缺點: 1、當炮哥同一時間內只表白一個女生的時候,如果女生拒絕了他,中間可能要等等待姑娘很長的回復時間,脫單的效率會很低。 2、同時表白多個姑娘的話,他可以利用姑娘回復的這段時間表白其他姑娘, 這樣炮哥脫單效率就會變得很高,但這樣也會帶來其他問題, 比如要耗費大量的精力財力,並且有可能多個女生關系處理不好,不便控制,容易發生意外情況。
所以同步和異步主要的優缺點我們就總結出來了:
1、同步的執行效率會比較低,耗費時間,但有利於我們對流程進行控制,避免很多不可掌控的意外情況。 2、異步的執行效率高,節省時間,但是會占用更多的資源,也不利於我們對進程進行控制。
異步的使用場景:
1、不涉及共享資源,或對共享資源只讀,即非互斥操作 2、沒有時序上的嚴格關系 3、不需要原子操作,或可以通過其他方式控制原子性 4、常用於IO操作等耗時操作,因為比較影響客戶體驗和使用性能 5、不影響主線程邏輯
同步的使用場景:
不使用異步的時候。
同步的好處:
1、同步流程對結果處理通常更為簡單,可以就近處理。 2、同步流程對結果的處理始終和前文保持在一個上下文內。 3、同步流程可以很容易捕獲、處理異常。 4、同步流程是最天然的控制過程順序執行的方式。
異步的好處:
1、異步流程可以立即給調用方返回初步的結果。 2、異步流程可以延遲給調用方最終的結果數據,在此期間可以做更多額外的工作,例如結果記錄等等。 3、異步流程在執行的過程中,可以釋放占用的線程等資源,避免阻塞,等到結果產生再重新獲取線程處理。 4、異步流程可以等多次調用的結果出來后,再統一返回一次結果集合,提高響應效率。
