From 6873bf04fa01cc1889b8994f8bf0bee98c87e386 Mon Sep 17 00:00:00 2001 From: fengyarnom Date: Wed, 6 Nov 2024 16:21:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=8D=95=E6=AC=A1=E8=A7=A3?= =?UTF-8?q?=E6=8C=81=E4=B9=85=E5=8C=96=E4=BF=9D=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/GnssSingleBufferServiceImpl.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/GnssSingleBufferServiceImpl.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/GnssSingleBufferServiceImpl.java index e49b92d8..e10654a7 100644 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/GnssSingleBufferServiceImpl.java +++ b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/GnssSingleBufferServiceImpl.java @@ -1,5 +1,6 @@ package com.imdroid.sideslope.service; +import com.imdroid.common.util.ThreadManager; import com.imdroid.secapi.dto.GnssSingleData; import com.imdroid.secapi.dto.GnssSingleDataMapper; import org.slf4j.Logger; @@ -48,12 +49,20 @@ public class GnssSingleBufferServiceImpl implements GnssSingleBufferService { try { List batchList = new ArrayList<>(buffer); buffer.clear(); - // 由于每秒写数据库操作频繁,这里采用批量保存的方式 - saveBatch(batchList); - logger.debug("批量插入{}条数据成功", batchList.size()); + // saveBatch 会导致同步阻塞操作 + // 数据库操作异步执行,不能阻塞 addData 方法 + ThreadManager.getSingleThreadPool("gnss-data-save").submit(() -> { + try { + saveBatch(batchList); + logger.debug("批量插入{}条数据成功", batchList.size()); + } catch (Exception e) { + logger.error("批量插入数据失败", e); + } + }); + } catch (Exception e) { - logger.error("批量插入数据失败", e); + logger.error("线程创建失败", e); throw e; } }