理論

所謂 future 模式就是將任務提交給後臺線程,然後主線程繼續進行其他任務,當調用任務返回數據的時候,如果任務還未返回就阻塞等待任務。

舉個例子:

一個人上街買西瓜汁(5min)和饅頭(1min)

傳統方式:

因爲西瓜汁要榨所以要等待5分鐘,而饅頭是做好的不用等待,傳統方式是:先買西瓜,就等5分鐘,然後再買饅頭。總共耗時:5+1

Future模式:

讓西瓜汁先做,然後自己去買饅頭,回來,在等4分鐘,也就是並行計算

總共耗時:5分鐘

分析:爲何會阻塞

原因就是變量等待被賦值,一直阻塞在某一行,那麼如果不想被阻塞,那麼當調用方法直接就返回,那麼就不會被阻塞了。

於是我們將直接調用方法進行包裝,當線程調用返回,會立即返回結果。當對結果進行處理的時候(判斷這是數據是否已經返回,如過沒有返回,那麼久阻塞)纔會真正被阻塞。

代碼實現

JDK中如何實現

1.集成Callable2.重寫call方法

查看原文 >>
相關文章