From 7152b5b21f2bacb538c1ff3466d0b6d8f5d2a794 Mon Sep 17 00:00:00 2001
From: ljm <13936569207@163.com>
Date: Wed, 9 Nov 2022 18:45:05 +0800
Subject: [PATCH] =?UTF-8?q?1.=E4=BF=AE=E5=A4=8DBUG=20key=E4=B8=BA=E5=BC=B1?=
=?UTF-8?q?=E5=BC=95=E7=94=A8=20value=E4=B8=BA=E5=BC=BA=E5=BC=95=E7=94=A8?=
=?UTF-8?q?=20=E4=BC=9A=E5=AF=BC=E8=87=B4key=E6=97=A0=E6=B3=95=E8=A2=AB?=
=?UTF-8?q?=E5=9B=9E=E6=94=B6=20=E5=BC=B1=E5=BC=95=E7=94=A8=E5=A4=B1?=
=?UTF-8?q?=E6=95=88?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../cn/hutool/core/lang/intern/WeakInterner.java | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/intern/WeakInterner.java b/hutool-core/src/main/java/cn/hutool/core/lang/intern/WeakInterner.java
index 7f9b8615d..335828950 100755
--- a/hutool-core/src/main/java/cn/hutool/core/lang/intern/WeakInterner.java
+++ b/hutool-core/src/main/java/cn/hutool/core/lang/intern/WeakInterner.java
@@ -2,6 +2,8 @@ package cn.hutool.core.lang.intern;
import cn.hutool.core.map.WeakConcurrentMap;
+import java.lang.ref.WeakReference;
+
/**
* 使用WeakHashMap(线程安全)存储对象的规范化对象,注意此对象需单例使用!
*
@@ -10,13 +12,16 @@ import cn.hutool.core.map.WeakConcurrentMap;
*/
public class WeakInterner implements Interner{
- private final WeakConcurrentMap cache = new WeakConcurrentMap<>();
+ private final WeakConcurrentMap> cache = new WeakConcurrentMap<>();
- @Override
public T intern(T sample) {
- if(null == sample){
+ if (sample == null) {
return null;
}
- return cache.computeIfAbsent(sample, (key)->sample);
+ T val;
+ do {
+ val = this.cache.computeIfAbsent(sample, WeakReference::new).get();
+ } while (val == null);
+ return val;
}
}