Browse Source

feat(all): 优化线程池

1 优化现有线程池
pull/1/head
zhaoqiaobo 12 months ago
parent
commit
0bd2941bda
  1. 6
      blade-service/logpm-report/src/main/java/com/logpm/report/controller/ReportBillLoadingController.java
  2. 6
      blade-service/logpm-report/src/main/java/com/logpm/report/controller/ReportDeliveryController.java
  3. 2
      blade-service/logpm-report/src/main/java/com/logpm/report/controller/ReportStockController.java
  4. 5
      blade-service/logpm-report/src/main/java/com/logpm/report/util/ReportExcelUtil.java
  5. 40
      blade-service/logpm-report/src/main/java/com/logpm/report/util/ThreadPoolUtil.java

6
blade-service/logpm-report/src/main/java/com/logpm/report/controller/ReportBillLoadingController.java

@ -55,11 +55,7 @@ public class ReportBillLoadingController {
@ApiOperationSupport(order = 4)
@ApiOperation(value = "导出自提明细报表", notes = "导出自提明细报表")
public void exportDetails(HttpServletResponse response, BillLoadingDetailsVO vo, BillDetailsQuery query) {
try {
reportBillLoadingAsyncService.exportDetails(response, vo, query);
} catch (Exception e) {
e.printStackTrace();
}
reportBillLoadingAsyncService.exportDetails(response, vo, query);
}

6
blade-service/logpm-report/src/main/java/com/logpm/report/controller/ReportDeliveryController.java

@ -93,11 +93,7 @@ public class ReportDeliveryController extends BladeController {
@ApiOperationSupport(order = 6)
@ApiOperation(value = "导出配送明细报表", notes = "导出配送明细报表")
public void exportDetails(HttpServletResponse response, ReportDetailVO vo, DevilerDetailsQuery query) {
try {
reportDeliverService.exportDetails(response, vo, query);
} catch (Exception e) {
e.printStackTrace();
}
reportDeliverService.exportDetails(response, vo, query);
}

2
blade-service/logpm-report/src/main/java/com/logpm/report/controller/ReportStockController.java

@ -60,7 +60,7 @@ public class ReportStockController extends BladeController {
@GetMapping("/exportDetails")
@ApiOperationSupport(order = 2)
@ApiOperation(value = "导出配送明细报表", notes = "导出配送明细报表")
@ApiOperation(value = "导出库存品表", notes = "导出库存品表")
public void exportDetails(HttpServletResponse response, StockDetailsVO vo, StockDetailsQuery query) {
stockService.exportDetails(response, vo, query);
}

5
blade-service/logpm-report/src/main/java/com/logpm/report/util/ReportExcelUtil.java

@ -19,7 +19,6 @@ import java.util.List;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* excel导出工具类
@ -93,8 +92,8 @@ public class ReportExcelUtil {
int findNum = (int) Math.ceil((count / pageSize.doubleValue()));
// 封装查询后需要导出的数据
Map<Integer, List<Object>> pageMap = new HashMap<>();
// 定义线程池,每个大表导出使用一个线程池
ExecutorService executorService = Executors.newFixedThreadPool(findNum);
// 定义线程池,大表导出使用一个线程池
ExecutorService executorService = ThreadPoolUtil.getThreadPool();
// 控制线程全部查询完后执行导出操作
CountDownLatch countDownLatch = new CountDownLatch(findNum);
ExcelWriter excelWriter = null;

40
blade-service/logpm-report/src/main/java/com/logpm/report/util/ThreadPoolUtil.java

@ -0,0 +1,40 @@
package com.logpm.report.util;
import cn.hutool.core.thread.ExecutorBuilder;
import cn.hutool.core.thread.ThreadFactoryBuilder;
import lombok.extern.slf4j.Slf4j;
import java.util.concurrent.ExecutorService;
/**
* @author zhaoqiaobo
* @create 2024-03-14 10:26
*/
@Slf4j
public class ThreadPoolUtil {
private ThreadPoolUtil() {
}
//构建线程池
public static ExecutorService executor = null;
static {
init();
}
synchronized public static void init() {
if (null != executor) {
executor.shutdownNow();
}
executor = ExecutorBuilder.create()
.setCorePoolSize(8)
.setMaxPoolSize(20)
.setThreadFactory(ThreadFactoryBuilder.create().setNamePrefix("logpm-report-").build())
.useSynchronousQueue().build();
}
public static ExecutorService getThreadPool(){
return executor;
}
}
Loading…
Cancel
Save