例2

2.使用Callable+FutureTask獲取執行結果

public class Test {

public static void main(String args) {

//第一種方式

ExecutorService executor = Executors.newCachedThreadPool;

Task task = new Task;

FutureTask(task);

executor.submit(futureTask);

executor.shutdown; //第二種方式,注意這種方式和第一種方式效果是類似的,只不過一個使用的是ExecutorService,一個使用的是Thread

/*

Task task = new Task;

FutureTask(task);

Thread thread = new Thread(futureTask);

thread.start;

*/

try {

Thread.sleep(1000);

} catch (InterruptedException e1) {

e1.printStackTrace;

}

System.out.println("主線程在執行任務");

try {

System.out.println("task運行結果"+futureTask.get);

} catch (InterruptedException e) {

e.printStackTrace;

} catch (ExecutionException e) {

e.printStackTrace;

}

System.out.println("所有任務執行完畢");

}

}

class Task implements Callable

如果為了可取消性而使用 Future 但又不提供可用的結果,則可以聲明 Future 形式類型、並返回 null 作為底層任務的結果。