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; } }