本文實際上是對上文《13.ThreadPoolExecutor線程池之submit方法的一個延續(xù)或者一個補充。在上文中提到的submit方法里出現(xiàn)了FutureTask,這不得不停止腳步將方向轉(zhuǎn)向JavaFuture模式。

  Future是并發(fā)編程中的一種設(shè)計模式,對于多線程來說,線程A需要等待線程B的結(jié)果,它沒必要一直等待B,可以先拿到一個未來的Future,等B有了結(jié)果后再取真實的結(jié)果。

ExecutorService executor = Executors.newSingleThreadExecutor();
Future<String> future = executor.submit(callable);    //主線程需要callable線程的結(jié)果,先拿到一個未來的FutureSystem.out.println(future.get());    //有了結(jié)果后再根據(jù)get方法取真實的結(jié)果,當(dāng)然如果此時callable線程如果沒有執(zhí)行完get方法會阻塞執(zhí)行完,如果執(zhí)行完則直接返回結(jié)果或拋出異常

   也就是說,

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負責(zé)任的教育,學(xué)習(xí)改變命運,軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式