1. 程式人生 > >java Future用法和意義一句話擊破

java Future用法和意義一句話擊破

在併發程式設計時,一般使用runnable,然後扔給執行緒池完事,這種情況下不需要執行緒的結果。 
所以run的返回值是void型別。 

如果是一個多執行緒協作程式,比如菲波拉切數列,1,1,2,3,5,8...使用多執行緒來計算。 
但後者需要前者的結果,就需要用callable介面了。 
callable用法和runnable一樣,只不過呼叫的是call方法,該方法有一個泛型返回值型別,你可以任意指定。 

執行緒是屬於非同步計算模型,所以你不可能直接從別的執行緒中得到函式返回值。 
這時候,Future就出場了。Futrue可以監視目標執行緒呼叫call的情況,當你呼叫Future的get()方法以獲得結果時,當前執行緒就開始阻塞,直接call方法結束返回結果。 


下面三段簡單的程式碼可以很簡明的揭示這個意思: 

runnable介面實現的沒有返回值的併發程式設計。 

callable實現的存在返回值的併發程式設計。(call的返回值String受泛型的影響) 

同樣是callable,使用Future獲取返回值。