Future:表示将要完成任务的结果。表示ExecutorService.submit()所返回的状态结果。也就是call()的返回值。
Future.get()方法,以阻塞的形式等待Future中的异步处理结果(call()的返回值)。
使用两个线程,并发计算1-50,51-100的和,在进行汇总统计。
public static void main(String[] args) throws ExecutionException, InterruptedException {
//创建一个定长的线程池,定义线程个数为2
ExecutorService executorService = Executors.newFixedThreadPool(2);
//提交任务
Future<Integer> future1 = executorService.submit(new Callable<Integer>() {
@Override
public Integer call() throws Exception {
System.out.println("开始计算1-50的和...");
int sum = 0;
for (int i = 1; i <= 50; i++) {
sum += i;
}
System.out.println("1-50的和计算完毕:" + sum);
return sum;
}
});
Future<Integer> future2 = executorService.submit(new Callable<Integer>() {
@Override
public Integer call() throws Exception {
System.out.println("开始计算51-100的和...");
int sum = 0;
for (int i = 51; i <= 100; i++) {
sum += i;
}
System.out.println("51-100的和计算完毕:" + sum);
return sum;
}
});
//获取结果
System.out.println("结果汇总:" + (future1.get() + future2.get()));
//关闭线程池
executorService.shutdown();
}