例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 作為底層任務的結果。