From 31fbee8d73fbdc8e2331208d69f674f9b29246ca Mon Sep 17 00:00:00 2001 From: 杨凯 <398860375@qq.com> Date: 星期三, 18 十月 2023 16:02:24 +0800 Subject: [PATCH] 同一个仓库下的同一个型号上锁,不同仓库、不同型号不受影响 --- deploy-jar-single/src/main/java/com/consum/test/synchronizedCode.java | 46 +++++++++++++++++++++++ consum-base/src/main/java/com/consum/base/core/WarehouseBusinessService.java | 9 ++++ consum-base/src/main/java/com/consum/base/core/WarehouseCoreService.java | 8 +++ 3 files changed, 61 insertions(+), 2 deletions(-) diff --git a/consum-base/src/main/java/com/consum/base/core/WarehouseBusinessService.java b/consum-base/src/main/java/com/consum/base/core/WarehouseBusinessService.java index 6d07897..ca8e0d8 100644 --- a/consum-base/src/main/java/com/consum/base/core/WarehouseBusinessService.java +++ b/consum-base/src/main/java/com/consum/base/core/WarehouseBusinessService.java @@ -4,7 +4,6 @@ import com.consum.base.core.tools.SuperMap; import com.consum.base.core.util.DateUtil; import com.consum.model.po.*; -import com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer; import com.walker.infrastructure.utils.NumberGenerator; import com.walker.jdbc.service.BaseServiceImpl; import org.springframework.beans.factory.annotation.Autowired; @@ -565,4 +564,12 @@ insertBatch(warningList); } + + /** + * 閮ㄩ棬鐗╁搧鍒嗗彂 + */ + public void doDepLending(){ + + } + } diff --git a/consum-base/src/main/java/com/consum/base/core/WarehouseCoreService.java b/consum-base/src/main/java/com/consum/base/core/WarehouseCoreService.java index 324bf71..30ba8b7 100644 --- a/consum-base/src/main/java/com/consum/base/core/WarehouseCoreService.java +++ b/consum-base/src/main/java/com/consum/base/core/WarehouseCoreService.java @@ -41,7 +41,13 @@ Assert.notNull(param, "wareHouse param can not null !"); Assert.notNull(param.getWarehouseId(), "wareHouse id can not null"); List<CheckWarehouseResult> results; - synchronized (param.getWarehouseId()) { + + String key = param.getWarehouseId().toString() + param.getModelId().toString(); + + /** + * 姝ゅ灏嗗悓涓�涓粨搴撲笅鐨勫悓涓�涓瀷鍙蜂笂閿侊紝涓嶅悓浠撳簱銆佷笉鍚屽瀷鍙蜂笉鍙楀奖鍝嶃�� + */ + synchronized (key) { if (param.getIsCheckIn()) { results = new ArrayList<>(); results.add(checkin(param)); diff --git a/deploy-jar-single/src/main/java/com/consum/test/synchronizedCode.java b/deploy-jar-single/src/main/java/com/consum/test/synchronizedCode.java new file mode 100644 index 0000000..6f8966f --- /dev/null +++ b/deploy-jar-single/src/main/java/com/consum/test/synchronizedCode.java @@ -0,0 +1,46 @@ +package com.consum.test; + +/** + * 娴嬭瘯澶氱嚎绋嬪苟鍙� + */ +public class synchronizedCode implements Runnable { + + static synchronizedCode instance = new synchronizedCode(); + static int i = 0; + + static String key = "1"; + + public static void main(String[] args) throws InterruptedException { + for (int j=0;j<3;j++){ + Thread t1 = new Thread(instance); + t1.start(); + } + + System.out.println("绾跨▼鎵ц缁撴潫"); + } + + @Override + public void run() { + + String myKey; + if (key == "1"){ + myKey = "def"; + key = "2"; + } else { + myKey = "abc"; + } + + System.out.println(Thread.currentThread().getName() + ":" + myKey); + + synchronized (myKey){ + System.out.println(Thread.currentThread().getName() + "寮�濮嬭繍琛�"); + try { + Thread.sleep(3000); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + System.out.println("鎴戝彨"+ Thread.currentThread().getName()+"杩愯缁撴潫"); + } + } +} \ No newline at end of file -- Gitblit v1.9.1