說明
1、FutureTask類不僅實現(xiàn)了Future接口還實現(xiàn)了Runnable接口,表示一種可生成結(jié)果的Runnable。
2、FutureTask類實現(xiàn)了Future接口的開啟和取消任務(wù)、查詢?nèi)蝿?wù)是否完成、獲取計算結(jié)果方法。
要獲取FutureTask任務(wù)的結(jié)果,我們只能通過調(diào)用getXXX()系列方法才能獲取,當(dāng)結(jié)果還沒出來時候這些方法會被阻塞,同時這了任務(wù)可以是Callable類型(有返回結(jié)果),也可以是Runnable類型(無返回結(jié)果)。
實例
private static void testFutureTask() throws ExecutionException, InterruptedException {
System.out.println("-------------------- testFutureTask --------------------");
// 創(chuàng)建一個 FutureTask(doOneThing 任務(wù))
FutureTaskfutureTask = new FutureTask<>(FutureTaskDemo::doOneThing);
// 使用線程池執(zhí)行 doOneThing 任務(wù)
ForkJoinPool.commonPool().execute(futureTask);
// 執(zhí)行 doOtherThing 任務(wù)
String doOtherThingResult = doOtherThing();
// 同步等待線程執(zhí)行 doOneThing 任務(wù)結(jié)束
String doOneThingResult = futureTask.get();
// 任務(wù)執(zhí)行結(jié)果輸出
System.out.println("doOneThingResult ---->>> " + doOneThingResult);
System.out.println("doOtherThingResult ---->>> " + doOtherThingResult);
}
以上就是java異常編程FutureTask的介紹,希望對大家有所幫助。更多關(guān)于“Java培訓(xùn)”的問題,歡迎咨詢千鋒教育在線名師。千鋒已有十余年的培訓(xùn)經(jīng)驗,課程大綱更科學(xué)更專業(yè),有針對零基礎(chǔ)的就業(yè)班,有針對想提升技術(shù)的好程序員班,高品質(zhì)課程助力你實現(xiàn)java程序員夢想。