consum-base/src/main/java/com/consum/base/core/WarehouseBusinessService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
consum-base/src/main/java/com/consum/base/core/WarehouseCoreService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
deploy-jar-single/src/main/java/com/consum/test/synchronizedCode.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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(){ } } 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)); deploy-jar-single/src/main/java/com/consum/test/synchronizedCode.java
New file @@ -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()+"运行结束"); } } }