多線程 -- Future & Callable
Callable
Callable 和 Runnable作用類(lèi)似, 都是為了讓其實(shí)例給另一個(gè)Thread去執(zhí)行,提交給線程池去執(zhí)行;
但是Runnable無(wú)返回值并且無(wú)法拋出異常, 而Callable可以返回結(jié)果;
Future
Feature 就是上面 Callable 提交給線程池后, 異步計(jì)算的結(jié)果;
提供任務(wù)是否完成, 取消任務(wù), 獲取任務(wù)結(jié)果的接口;
使用get
方法獲取結(jié)果, 大部分實(shí)現(xiàn)類(lèi), 實(shí)現(xiàn)了獲取異步計(jì)算結(jié)果前,阻塞當(dāng)前線程; 因而該功能可以用于當(dāng)前線程去同步獲取異步計(jì)算結(jié)果;
FutureTask
該類(lèi)實(shí)現(xiàn)了 Future 和 Runnable 接口;
異步任務(wù)可以調(diào)用 set
, setException
方法, 將計(jì)算結(jié)果返回;