異步編程之CompleTableFuture
一、前期準備(基礎講解)
1、 什麼是異步?
所謂異步調用其實就是實現一個可無需等待被調用函數的返回值而讓操作繼續運行的方法。在 Java 語言中,簡單的講就是另啓一個線程來完成調用中的部分計算,使調用繼續運行或返回,而不需要等待計算結果。但調用者仍需要取線程的計算結果。
2、使用前注意點介紹
在併發時代,我們常用多線程來進行異步編程,但是多線程有一個缺點,就是不容易獲取線程執行後的值,儘管用一些奇招可以獲取,但是這已經遠離了我們的初衷。java 1.5
提供了一個future
接口,可以對線程中的執行狀態進行cancle
,判斷isCancelled
,isDone
。利用多線程來獲取異步執行後的值,但是也有着諸多的缺點,比如
1.future
沒有異常處理程序,通常在future
中異常後線程會一直阻塞在內部,造成異常拋不出,線程也退出不了
future
中的get
超時方法可以解決這個問題,但是若是方法還沒有執行完,超時時間也過,又會出現超時異常的問題
V get(long timeout, TimeUnit unit)