From 59bba70ffe7bc22b3a2ff4e4e28719c58efc35bf Mon Sep 17 00:00:00 2001 From: wyb <1977763549@qq.com> Date: Fri, 14 Feb 2025 16:55:51 +0800 Subject: [PATCH] =?UTF-8?q?imp:=20=E6=94=B9=E8=BF=9B=E7=BA=BF=E7=A8=8B?= =?UTF-8?q?=E6=B1=A0=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/jiashi/FileUploader.java | 2 + .../com/jiashi/service/UpdateService.java | 40 ++++++++++++++----- 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/jiashi/FileUploader.java b/src/main/java/com/jiashi/FileUploader.java index d47de4a..a7a53ec 100644 --- a/src/main/java/com/jiashi/FileUploader.java +++ b/src/main/java/com/jiashi/FileUploader.java @@ -70,6 +70,8 @@ public class FileUploader { syncExecutors.execute(fileUploader::t2); }catch (Exception ex){ ex.printStackTrace(); + }finally { + syncExecutors.shutdown(); } } public void t1(){ diff --git a/src/main/java/com/jiashi/service/UpdateService.java b/src/main/java/com/jiashi/service/UpdateService.java index eec633a..d9e8dbe 100644 --- a/src/main/java/com/jiashi/service/UpdateService.java +++ b/src/main/java/com/jiashi/service/UpdateService.java @@ -34,6 +34,9 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.function.Function; import java.util.stream.Collectors; @@ -75,13 +78,25 @@ public class UpdateService { } - public void syncNotStart(){ + + public void syncNotStart() { log.info("联众同步数据启动>>>>>>>>>>>>>>>>>>>>"); String syncDir = FilePathUtil.currentPath() + File.separator + "lianzhong-sync"; FilePathUtil.mkdirs(syncDir); - - ExecutorService patientExecutors = Executors.newFixedThreadPool(10); - ExecutorService fileExecutor = Executors.newFixedThreadPool(90); + int corePoolSize = Runtime.getRuntime().availableProcessors(); + int maximumPoolSize = corePoolSize * 2; + long keepAliveTime = 300L; + TimeUnit unit = TimeUnit.SECONDS; + LinkedBlockingDeque workQueue = new LinkedBlockingDeque<>(); + ThreadFactory threadFactory = Executors.defaultThreadFactory(); + ThreadPoolExecutor.CallerRunsPolicy handler = new ThreadPoolExecutor.CallerRunsPolicy(); + ThreadPoolExecutor executor = new ThreadPoolExecutor(corePoolSize, + maximumPoolSize, + keepAliveTime, + unit, + workQueue, + threadFactory, + handler); try { while (true) { List cardInfos = this.updateData(); @@ -91,7 +106,7 @@ public class UpdateService { String picDir = syncDir + File.separator + cardInfo.getId(); FilePathUtil.mkdirs(picDir); - Future patientFuture = patientExecutors.submit(() -> { + Future patientFuture = executor.submit(() -> { try { List pictures = dataQuery.getPictures(cardInfo.getId()); if (CollectionUtils.isEmpty(pictures)) { @@ -110,7 +125,7 @@ public class UpdateService { dataQuery.updatePicPath(cardInfo, lianZhongDir); List fileFutures = new ArrayList<>(); for (Picture picture : pictures) { - Future fileFuture = fileExecutor.submit(() -> { + Future fileFuture = executor.submit(() -> { String tifFilePath = lianZhongDir + File.separator + removeFileExtension(picture.getPicname()) + ".tif"; File tifFile = new File(tifFilePath); if (tifFile.exists()) { @@ -242,15 +257,18 @@ public class UpdateService { } } catch (Exception ex) { log.error("联众同步数据异常:" + ex.getMessage(), ex); + } finally { + executor.shutdown(); } } + public void sycDirNotExistsJob() { - while (true){ + while (true) { try { sycDirNotExists(); TimeUnit.SECONDS.sleep(600); - }catch (Exception ex){ - log.error("补偿异常 ,"+ex.getMessage(),ex); + } catch (Exception ex) { + log.error("补偿异常 ," + ex.getMessage(), ex); } } @@ -381,6 +399,8 @@ public class UpdateService { System.out.println(new Gson().toJson(stringSetMap)); Set strings = stringSetMap.get("12345"); System.out.println(new Gson().toJson(strings)); + int processors = Runtime.getRuntime().availableProcessors(); + System.out.println(processors); } private void initLianZhongPatPicDir() { @@ -567,6 +587,4 @@ public class UpdateService { } - - }