在执行多个查询,并且数据之前没有依赖,可以常用使用多线程,来进行查询合并。以下方案并不是最优方案。要看情况而定,如果查询比较多的话,可以使用forkjoin,futuretask。还有就是每次调用都要创建线程池和关闭线程池,这个地方也可以进行优化
public ResultData test() throws InterruptedException {
//1.先创建一个线程池
ExecutorService executorService = Executors.newFixedThreadPool(2);
//2.创建一个结果集,来保存结果
ResultData resultData = new ResultData();
//3.执行第一个查询
executorService.submit(() -> {
resultData.setOrgData(emergencyMaterialProcurementService.getOrgIdParentId("1"));
});
//4.执行另一个查询
executorService.submit(() -> {
resultData.setBizData(emergencyMaterialProcurementService.getBizObjectId("1"););
});
//5.关闭线程池
executorService.shutdown();
//6.设置最大等待时间
executorService.awaitTermination(Long.MAX_VALUE, TimeUnit.MINUTES);
return resultData;
}











网友评论