例1

1.使用Callable+Future獲取執行結果

public class Test {

public static void main(String args) {

ExecutorService executor = Executors.newCachedThreadPool;

Task task = new Task;

Futureresult = executor.submit(task);

executor.shutdown;

try {

Thread.sleep(1000);

} catch (InterruptedException e1) {

e1.printStackTrace;

}

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

try {

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

} catch (InterruptedException e) {

e.printStackTrace;

} catch (ExecutionException e) {

e.printStackTrace;

}

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

}

}

class Task implements Callable{

@Override

public Integer call throws Exception {

System.out.println("子線程在進行計算");

Thread.sleep(3000);

int sum = 0;

for(int i=0;i<100;i++)

sum += i;

return sum;

}

}

執行結果:

子線程在進行計算 主線程在執行任務 task運行結果4950 所有任務執行完畢