說明
1、FutureTask類不僅實(shí)現(xiàn)了Future接口還實(shí)現(xiàn)了Runnable接口,表示一種可生成結(jié)果的Runnable。
2、FutureTask類實(shí)現(xiàn)了Future接口的開啟和取消任務(wù)、查詢?nèi)蝿?wù)是否完成、獲取計(jì)算結(jié)果方法。
要獲取FutureTask任務(wù)的結(jié)果,我們只能通過調(diào)用getXXX()系列方法才能獲取,當(dāng)結(jié)果還沒出來時(shí)候這些方法會(huì)被阻塞,同時(shí)這了任務(wù)可以是Callable類型(有返回結(jié)果),也可以是Runnable類型(無返回結(jié)果)。
實(shí)例
private static void testFutureTask() throws ExecutionException, InterruptedException {
System.out.println("-------------------- testFutureTask --------------------");
// 創(chuàng)建一個(gè) 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)驗(yàn),課程大綱更科學(xué)更專業(yè),有針對零基礎(chǔ)的就業(yè)班,有針對想提升技術(shù)的好程序員班,高品質(zhì)課程助力你實(shí)現(xiàn)java程序員夢想。