Future.get(并发之从任务中产生返回值)

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

/**
 * 如果你想在任务返回后带一个返回值,可以实现Callable接口
* executorService.submit返回带结果的future对象[执行了call方法后返回]
* 调用get会一直阻塞直到结果返回 * * @date:2018年6月26日 *
@author:zhangfs * * */ public class CallableDemo implements Callable { private int id; public CallableDemo(int id) { this.id = id; } public static void main(String[] args) { ExecutorService executorService = Executors.newCachedThreadPool(); List> results = new ArrayList>(); for (int i = 0; i < 10; i++) { results.add(executorService.submit(new CallableDemo(i))); } for (Future future : results) { try { System.out.println(future.get()); } catch (InterruptedException | ExecutionException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { executorService.shutdown(); } } } @Override public String call() throws Exception { // TODO Auto-generated method stub return "Result of CallableDemo is " + id; } }

 

转载于:https://www.cnblogs.com/zhangfengshi/p/9230556.html

你可能感兴趣的:(Future.get(并发之从任务中产生返回值))