多執行緒中Future與FutureTask的區別和聯絡
阿新 • • 發佈:2018-12-27
4.2 使用Callable+FutureTask獲取執行結果
執行結果:package com.zejian.Executor; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.concurrent.FutureTask; /** * @author zejian * @time 2016年3月15日 下午2:05:43 * @decrition callable執行測試類 */ public class CallableTest { public static void main(String[] args) { // //建立執行緒池 // ExecutorService es = Executors.newSingleThreadExecutor(); // //建立Callable物件任務 // CallableDemo calTask=new CallableDemo(); // //提交任務並獲取執行結果 // Future<Integer> future =es.submit(calTask); // //關閉執行緒池 // es.shutdown(); //建立執行緒池 ExecutorService es = Executors.newSingleThreadExecutor(); //建立Callable物件任務 CallableDemo calTask=new CallableDemo(); //建立FutureTask FutureTask<Integer> futureTask=new FutureTask<>(calTask); //執行任務 es.submit(futureTask); //關閉執行緒池 es.shutdown(); try { Thread.sleep(2000); System.out.println("主執行緒在執行其他任務"); if(futureTask.get()!=null){ //輸出獲取到的結果 System.out.println("futureTask.get()-->"+futureTask.get()); }else{ //輸出獲取到的結果 System.out.println("futureTask.get()未獲取到結果"); } } catch (Exception e) { e.printStackTrace(); } System.out.println("主執行緒在執行完成"); } }
Callable子執行緒開始計算啦!
主執行緒在執行其他任務
Callable子執行緒計算結束!
futureTask.get()-->12497500
主執行緒在執行完成