Java並行模式之Future模式
理論
所謂 future 模式就是將任務提交給後臺線程,然後主線程繼續進行其他任務,當調用任務返回數據的時候,如果任務還未返回就阻塞等待任務。
舉個例子:
一個人上街買西瓜汁(5min)和饅頭(1min)
傳統方式:
因爲西瓜汁要榨所以要等待5分鐘,而饅頭是做好的不用等待,傳統方式是:先買西瓜,就等5分鐘,然後再買饅頭。總共耗時:5+1
Future模式:
讓西瓜汁先做,然後自己去買饅頭,回來,在等4分鐘,也就是並行計算
總共耗時:5分鐘
分析:爲何會阻塞
原因就是變量等待被賦值,一直阻塞在某一行,那麼如果不想被阻塞,那麼當調用方法直接就返回,那麼就不會被阻塞了。
於是我們將直接調用方法進行包裝,當線程調用返回,會立即返回結果。當對結果進行處理的時候(判斷這是數據是否已經返回,如過沒有返回,那麼久阻塞)纔會真正被阻塞。
代碼實現
JDK中如何實現
1.集成Callable