1、场景阐述;
在某些情况下,需要获得一组线程的结果,给调用端。例如在Controller的某个请求方法中,执行了n个线程,需要将这n个线程的结果都响应给请求。
2、方案设计;
利用Callable的返回阻塞,来等待这n个线程的执行完毕,然后将这n个线程的结果响应回去;其执行时间,基本上取决于最耗时的那个线程。
3、具体代码;
public class ReturnSameTime {
private static class CallableTest implements Callable<Integer>{
@Override
public Integer call() throws Exception {
return 1;
}
}
private static class CallableTest2 implements Callable<Integer>{
@Override
public Integer call() throws Exception {
Thread.sleep(10*1000);
return 2;
}
}
private static class CallableTest3 implements Callable<Integer>{
@Override
public Integer call() throws Exception {
Thread.sleep(2*1000);
return 3;
}
}
public static void main(String[] args) throws Exception {
Callable<Integer> a = new CallableTest();
Callable<Integer> b = new