From 3dedbda35f158b4f892270d7dd3838de5100dee7 Mon Sep 17 00:00:00 2001 From: tuqiang <437016993@qq.com> Date: Sat, 6 Dec 2025 09:47:42 +0800 Subject: [PATCH] =?UTF-8?q?add=EF=BC=9A=E6=B7=BB=E5=8A=A0=E9=94=81?= =?UTF-8?q?=E7=9A=84=E5=B7=A5=E5=85=B7=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/nl/acs/utils/CurrentLock.java | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/utils/CurrentLock.java diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/utils/CurrentLock.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/utils/CurrentLock.java new file mode 100644 index 000000000..f2c8e55e7 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/utils/CurrentLock.java @@ -0,0 +1,49 @@ +package org.nl.acs.utils; + +import cn.hutool.core.util.StrUtil; + +import java.util.Timer; +import java.util.TimerTask; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.locks.ReentrantLock; + +public class CurrentLock { + + static ConcurrentHashMap clock = new ConcurrentHashMap<>(); + static Timer timer = new Timer(true); + + public static Boolean tryLock(String key){ + synchronized (buildLock(key)){ + ReentrantLock lock = clock.get(key); + if (lock == null){ + ReentrantLock reentrantLock = new ReentrantLock(); + clock.put(key,reentrantLock); + return reentrantLock.tryLock(); + }else { + return lock.tryLock(); + } + } + } + public static void unLock(String key){ + System.out.println("---释放锁---"); + synchronized (buildLock(key)){ + ReentrantLock lock = clock.get(key); + if (lock != null){ + if (lock.isLocked() && lock.isHeldByCurrentThread()){ + lock.unlock(); + } + } + } + } + private static String buildLock(String key) { + if (StrUtil.isEmpty(key)) { + key = ""; + } + StringBuilder builder = new StringBuilder(); + builder.append("currentLock."); + builder.append(key); + String lock = builder.toString().intern(); + return lock; + } +}