5
更確切地說,如果我通過調用submit(Callable<T> task)
方法開始異步計算ExecutorService
(本身由Executors.newCachedThreadPool()
構造),我可以等待計算完成並檢索結果通過致電Future.get()
。Java可調用:在調用get()之前線程會發生什麼
我的問題是:如果計算已經完成,會發生什麼情況,直到我撥打get()
?在檢索結果之前線程是否被阻塞?結果是否存儲和線程分配給另一個任務?完全不同的東西?
在此先感謝您的答案
謝謝你的回答!爲了確保我正確理解你(對不起,英語不是我的母語):如果我啓動多個線程進行計算並在完成後很快檢索結果,這不是問題,因爲完成的任務不使用任何資源吧? – 2015-03-31 18:33:12
@shadow_heart計算結果(=任務)存儲在'Future'對象內,所以你可以隨時「get()」。如果計算還沒有完成,'get()'只會阻塞調用線程。 – isnot2bad 2015-04-01 00:37:05