From cecc7aa181047e9b9543a1f0458e1393ce04626e Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Sat, 5 Apr 2025 17:42:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E8=AE=BE=E5=A4=87=E9=98=9F=E5=88=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ycwl/basic/controller/viid/ViidController.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/ycwl/basic/controller/viid/ViidController.java b/src/main/java/com/ycwl/basic/controller/viid/ViidController.java index b4e610c..74957e3 100644 --- a/src/main/java/com/ycwl/basic/controller/viid/ViidController.java +++ b/src/main/java/com/ycwl/basic/controller/viid/ViidController.java @@ -67,6 +67,7 @@ import java.util.Map; import java.util.TimeZone; import java.util.UUID; import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @@ -91,8 +92,16 @@ public class ViidController { private ScenicRepository scenicRepository; @Autowired private TaskFaceService taskFaceService; + private final Map executors = new ConcurrentHashMap<>(); - private final ThreadPoolExecutor executor = new ThreadPoolExecutor(8, 4096, 0L, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<>(4096)); + private ThreadPoolExecutor getExecutor(String deviceId) { + ThreadPoolExecutor executor = executors.get(deviceId); + if (executor == null) { + executor = new ThreadPoolExecutor(4, 4096, 0L, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<>(4096)); + executors.put(deviceId, executor); + } + return executor; + } // region 注册注销基础接口 /** @@ -311,6 +320,7 @@ public class ViidController { String url = adapter.uploadFile(file, "user-face", UUID.randomUUID() + "." + ext); faceSample.setFaceUrl(url); faceSampleMapper.add(faceSample); + ThreadPoolExecutor executor = getExecutor(device.getId().toString()); executor.execute(() -> { if (faceBodyAdapter != null) { taskFaceService.assureFaceDb(faceBodyAdapter, scenicId.toString()); @@ -372,6 +382,7 @@ public class ViidController { faceSample.setFaceUrl(url); faceSampleMapper.add(faceSample); DynamicTaskGenerator.addTask(faceSample.getId()); + ThreadPoolExecutor executor = getExecutor(device.getId().toString()); executor.execute(() -> { if (faceBodyAdapter != null) { taskFaceService.assureFaceDb(faceBodyAdapter, scenicId.toString());