說明
1、FutureTask類別不僅實作了Future介面也實作了Runnable接口,表示一種可產生結果的Runnable。
2、FutureTask類別實作了Future介面的開啟與取消任務、查詢任務是否完成、取得計算結果方法。
要取得FutureTask任務的結果,我們只能透過呼叫getXXX()系列方法才能獲取,當結果還沒出來時候這些方法會被阻塞,同時這了任務可以是Callable類型(有回傳結果),也可以是Runnable類型(無回傳結果)。
實例
private static void testFutureTask() throws ExecutionException, InterruptedException { System.out.println("-------------------- testFutureTask --------------------"); // 创建一个 FutureTask(doOneThing 任务) FutureTask<String> futureTask = new FutureTask<>(FutureTaskDemo::doOneThing); // 使用线程池执行 doOneThing 任务 ForkJoinPool.commonPool().execute(futureTask); // 执行 doOtherThing 任务 String doOtherThingResult = doOtherThing(); // 同步等待线程执行 doOneThing 任务结束 String doOneThingResult = futureTask.get(); // 任务执行结果输出 System.out.println("doOneThingResult ---->>> " + doOneThingResult); System.out.println("doOtherThingResult ---->>> " + doOtherThingResult); }
以上是java異常編程FutureTask實例分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!