例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 所有任務執行完畢