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