Java多線程編程:Callable、Future和FutureTask淺析(多線程編程之四)
????最近在寫清結(jié)算文件前置的相關(guān)代碼時,考慮使用多線程機(jī)制來提高效率,所以深入了解了一下關(guān)于Future和Callable的相關(guān)知識。一般我們使用多線程很多是實現(xiàn)Runnable接口,但Runnable接口的run方法是無返回值的。如果我們需要得到線程的返回結(jié)果,那么就可以使用Callable接口了。清潔算的第三方文件前置剛好符合這種情況:比如支付寶前置,支付寶的請求是分時間段的,所以一條業(yè)務(wù)線取文件的時候是發(fā)送了多條http請求的。這時使用Future和Callable的多線程方式就能提高效率,我們寫下載任務(wù)task實現(xiàn)Callable,使用Executor.submit(task)來提交任務(wù),然后使用Future.get 方法來返回任務(wù)成功或失敗的結(jié)果,如果有任務(wù)失敗了,那么就不進(jìn)行接下來的操作,所有的下載任務(wù)成功了才進(jìn)行相關(guān)的文件合并操作。
? ? Future和Callable適用于需要得到線程的執(zhí)行結(jié)果的情況.