报表查询中,可能涉及过多业务,在sql优化以后,仍然存在查询过慢,导致串行查询不适用情况,引入Future接口进行多线程查询,实现快速生成报表;
主线程类:
//利用多线程查询数据
ThreadPoolExecutor threadPool = ImportDataThreadPoolUtil.getInstance();
//期初数
ReportCallable startPc = new ReportCallable(startSqlQuery);//期初数
FutureTask<List<Object[]>> startFt = new FutureTask<List<Object[]>>(startPc);//期初任务
threadPool.execute(startFt);
//期末数
ReportCallable endPc = new ReportCallable(endSqlQuery);//期末数
FutureTask<List<Object[]>> endFt = new FutureTask<List<Object[]>>(endPc);//期末任务
threadPool.execute(endFt);
//放款数
ReportCallable disbursementPc = new ReportCallable(disbursementSqlQuery);//放款数据