ExecutorService executorService = ThreadUtil.newExecutor(2); //使用Guava的ListeningExecutorService装饰线程池 ListeningExecutorService listeningExecutorService = MoreExecutors.listeningDecorator(executorService);
List<ListenableFuture<CashRedEnvelopesExhibitionDTO>> futureList = new ArrayList<>(); //线程 A对象 线程 B对象 futureList.add(listeningExecutorService.submit(new A()); futureList.add(listeningExecutorService.submit(new B())); List<CashRedEnvelopesExhibitionDTO> cashRedEnvelopesExhibitionDTOS = Futures.allAsList(futureList).get(); //同步返回结果 List<CashRedEnvelopesExhibitionDTO> list = cashRedEnvelopesExhibitionDTOS.stream().filter(item ->item != null).collect(Collectors.toList());
A或B 例如:
public class A implements Callable { @Override public Object call() throws Exception { //结果对象 CashRedEnvelopesExhibitionDTO cashRedEnvelopesExhibitionDTO = new CashRedEnvelopesExhibitionDTO(); //其他业务代码 等等 return cashRedEnvelopesExhibitionDTO; } }