同步調用,異步回調和Future模式-創新互聯

目標

通過與方法的同步調用,異步回調比較,理解 Future 模式

創新互聯公司是一家集網站建設,太仆寺企業網站建設,太仆寺品牌網站建設,網站定制,太仆寺網站建設報價,網絡營銷,網絡優化,太仆寺網站推廣為一體的創新建站企業,幫助傳統企業提升企業形象加強企業競爭力??沙浞譂M足這一群體相比中小企業更為豐富、高端、多元的互聯網需求。同時我們時刻保持專業、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們為更多的企業打造出實用型網站。

三者的不同

讓我們先來明確一下同步與異步的不同。我們這里所說的同步和異步,僅局限在方法的同步調用和異步回調中。即,同步指的是調用一個方法,調用方要等待該方法所執行的任務完全執行完畢,然后控制權回到調用方;異步指的是調用一個方法,調用方不等該方法執行的任務完畢就返回,當任務執行完畢時會自動執行調用方傳入的一塊代碼。

同步調用

void runTask {
  doTask1()
  doTask2()
}

同步調用,執行完 doTask1 在執行 doTask2

異步回調

doTask1(new Callback() {
  void call() {
    doTask3()
  }
});
doTask2();

異步回調,會先后執行 doTask1 和 doTask2, 在執行完 doTask1 后執行 doTask3

Future 模式

Future future = doTask1();
doTask2();
doTask3();
Result result = future.get();

我們可以看到,Future 模式中,一個任務的啟動和獲取結果分成了兩部分,啟動執行是異步的,調用后立馬返回,調用者可以繼續做其他的任務,而等到其他任務做完,再獲取Future的結果,此時調用 get 時是同步的,也就是說如果 doTask1 如果還沒有做完,等它做完。

適用情景

我們根據前面的例子可以看出,同步調用適合執行耗時短的任務。
異步回調適合執行耗時長的任務
Future 同樣適合執行長的任務,它與回調的不同在于 get() 會阻塞等待,它的結果可能與調用后執行的任務有關系。比如,在燒水的過程中洗刷水壺,最后兩者都完了才能泡茶。

Future模式的 Java 實現

Java 的并發庫實現了 Future 模式,它定義了 Future 接口:

public interface Future<V> {
    boolean cancel(boolean var1);

    boolean isCancelled();

    boolean isDone();

    V get() throws InterruptedException, ExecutionException;

    V get(long var1, TimeUnit var3) throws InterruptedException, ExecutionException, TimeoutException;
}

我們通過它取消任務的執行,判斷是否取消和是否完成,獲取結果。

Java 庫還實現了一個 FutureTask, 它實現了 RunnableFuture(它繼承了 Runnable 和 Future)。于是我們就可以用 Executor 來執行這個任務了。

FutureTask<String> futureTask = new FutureTask<>(new Runnable() {
    @Override
    public void run() {

    }
}, "hello");
Executors.newSingleThreadExecutor().execute(futureTask);

... 其他任務

try {
    String result = futureTask.get();
} catch (InterruptedException e) {
    e.printStackTrace();
} catch (ExecutionException e) {
    e.printStackTrace();
}

總結

  1. 同步調用,調用方掌握控制權
  2. 異步回調,調用方放權,從而可以實現并行處理任務
  3. Future 模式,則是控制權和平行處理的折中

另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

本文名稱:同步調用,異步回調和Future模式-創新互聯
文章網址:http://m.kartarina.com/article12/dcpegc.html

成都網站建設公司_創新互聯,為您提供做網站軟件開發網站維護微信公眾號、品牌網站設計、外貿網站建設

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都網站建設
主站蜘蛛池模板: 国产无码一区二区在线| 亚洲午夜国产精品无码| 日韩AV无码精品一二三区| 国产三级无码内射在线看| 久久国产精品无码一区二区三区| 国产久热精品无码激情| yy111111少妇影院无码| 日韩AV无码久久一区二区| 国产成人无码网站| 久久久无码精品亚洲日韩按摩| 无码av不卡一区二区三区| 无码乱肉视频免费大全合集| 中文字幕乱妇无码AV在线 | 无码任你躁久久久久久| 熟妇人妻中文av无码| 亚洲国产AV无码一区二区三区 | 中文AV人妻AV无码中文视频| 伊人久久精品无码av一区| 亚洲av无码成人精品区一本二本| 狠狠精品久久久无码中文字幕| 久久精品无码中文字幕| 成人免费午夜无码视频| 久久精品无码专区免费东京热| 中文字幕乱码人妻无码久久 | 中文字幕无码精品亚洲资源网| 免费看成人AA片无码视频羞羞网 | 亚洲中文字幕无码中文字在线| 国产精品无码无卡在线观看久| 亚洲AV无码资源在线观看| 中文字幕人成无码免费视频| 久久亚洲AV无码精品色午夜麻| 高h纯肉无码视频在线观看| 精品无码人妻久久久久久| 国产精品亚洲专区无码不卡| WWW久久无码天堂MV| 国产aⅴ激情无码久久久无码| 国产精品午夜无码体验区| 精品无码国产自产拍在线观看蜜| 中文无码日韩欧免费视频| 国产成人无码一二三区视频| 久久人妻少妇嫩草AV无码蜜桃|