diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/annotation/AnnotatedElementUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/annotation/AnnotatedElementUtil.java index 90f4d7906..734c00c4c 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/annotation/AnnotatedElementUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/annotation/AnnotatedElementUtil.java @@ -15,7 +15,7 @@ package org.dromara.hutool.core.annotation; import org.dromara.hutool.core.annotation.elements.HierarchicalAnnotatedElements; import org.dromara.hutool.core.annotation.elements.MetaAnnotatedElement; import org.dromara.hutool.core.annotation.elements.RepeatableMetaAnnotatedElement; -import org.dromara.hutool.core.map.WeakConcurrentMap; +import org.dromara.hutool.core.map.reference.WeakKeyConcurrentMap; import org.dromara.hutool.core.array.ArrayUtil; import org.dromara.hutool.core.util.ObjUtil; @@ -133,7 +133,7 @@ import java.util.stream.Stream; *

缓存 *

为了避免注解以及{@link AnnotatedElement}层级结构解析过程中的大量反射调用, * 工具类为{@link AnnotatedElement}及其元注解信息进行了缓存。
- * 缓存功能默认基于{@link WeakConcurrentMap}实现,会在gc时自动回收部分缓存数据。 + * 缓存功能默认基于{@link WeakKeyConcurrentMap}实现,会在gc时自动回收部分缓存数据。 * 但是若有必要,也可以调用{@link #clearCaches()}方法主动清空缓存。 * * @author huangchengxing @@ -150,22 +150,22 @@ public class AnnotatedElementUtil { /** * 支持属性解析的{@link MetaAnnotatedElement}缓存 */ - private static final Map> RESOLVED_ELEMENT_CACHE = new WeakConcurrentMap<>(); + private static final Map> RESOLVED_ELEMENT_CACHE = new WeakKeyConcurrentMap<>(); /** * 不支持属性解析的{@link MetaAnnotatedElement}缓存 */ - private static final Map> ELEMENT_CACHE = new WeakConcurrentMap<>(); + private static final Map> ELEMENT_CACHE = new WeakKeyConcurrentMap<>(); /** * 不支持属性解析的{@link RepeatableMetaAnnotatedElement}缓存 */ - private static final Map> RESOLVED_REPEATABLE_ELEMENT_CACHE = new WeakConcurrentMap<>(); + private static final Map> RESOLVED_REPEATABLE_ELEMENT_CACHE = new WeakKeyConcurrentMap<>(); /** * 不支持属性解析的{@link RepeatableMetaAnnotatedElement}缓存 */ - private static final Map> REPEATABLE_ELEMENT_CACHE = new WeakConcurrentMap<>(); + private static final Map> REPEATABLE_ELEMENT_CACHE = new WeakKeyConcurrentMap<>(); // region ========== find ========== diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/annotation/AnnotationMappingProxy.java b/hutool-core/src/main/java/org/dromara/hutool/core/annotation/AnnotationMappingProxy.java index 2247ac82b..9dfa2cd9b 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/annotation/AnnotationMappingProxy.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/annotation/AnnotationMappingProxy.java @@ -12,7 +12,7 @@ package org.dromara.hutool.core.annotation; -import org.dromara.hutool.core.map.SafeConcurrentHashMap; +import org.dromara.hutool.core.map.concurrent.SafeConcurrentHashMap; import org.dromara.hutool.core.reflect.method.MethodUtil; import org.dromara.hutool.core.text.CharSequenceUtil; diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/annotation/AnnotationUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/annotation/AnnotationUtil.java index b74ed9766..855c10513 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/annotation/AnnotationUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/annotation/AnnotationUtil.java @@ -19,7 +19,7 @@ import org.dromara.hutool.core.exception.HutoolException; import org.dromara.hutool.core.func.LambdaInfo; import org.dromara.hutool.core.func.LambdaUtil; import org.dromara.hutool.core.func.SerFunction; -import org.dromara.hutool.core.map.WeakConcurrentMap; +import org.dromara.hutool.core.map.reference.WeakKeyConcurrentMap; import org.dromara.hutool.core.reflect.FieldUtil; import org.dromara.hutool.core.reflect.method.MethodUtil; import org.dromara.hutool.core.text.CharSequenceUtil; @@ -50,7 +50,7 @@ public class AnnotationUtil { /** * 直接声明的注解缓存 */ - private static final Map DECLARED_ANNOTATIONS_CACHE = new WeakConcurrentMap<>(); + private static final Map DECLARED_ANNOTATIONS_CACHE = new WeakKeyConcurrentMap<>(); /** * 获取直接声明的注解,若已有缓存则从缓存中获取 diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/annotation/RepeatableAnnotationCollector.java b/hutool-core/src/main/java/org/dromara/hutool/core/annotation/RepeatableAnnotationCollector.java index 71c1d124e..fa5f5a7c7 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/annotation/RepeatableAnnotationCollector.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/annotation/RepeatableAnnotationCollector.java @@ -14,7 +14,7 @@ package org.dromara.hutool.core.annotation; import org.dromara.hutool.core.array.ArrayUtil; import org.dromara.hutool.core.collection.CollUtil; -import org.dromara.hutool.core.map.WeakConcurrentMap; +import org.dromara.hutool.core.map.reference.WeakKeyConcurrentMap; import org.dromara.hutool.core.reflect.method.MethodUtil; import org.dromara.hutool.core.text.CharSequenceUtil; @@ -337,7 +337,7 @@ public interface RepeatableAnnotationCollector { /** * 可重复注解对应的方法缓存 */ - private final Map, Object> repeatableMethodCache = new WeakConcurrentMap<>(); + private final Map, Object> repeatableMethodCache = new WeakKeyConcurrentMap<>(); /** * 构造 @@ -447,7 +447,7 @@ public interface RepeatableAnnotationCollector { /** * 可重复注解对应的方法缓存 */ - private final Map, Object> repeatableMethodCache = new WeakConcurrentMap<>(); + private final Map, Object> repeatableMethodCache = new WeakKeyConcurrentMap<>(); /** * 构造 diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/bean/BeanDescCache.java b/hutool-core/src/main/java/org/dromara/hutool/core/bean/BeanDescCache.java index 3146d2638..1563c0f9f 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/bean/BeanDescCache.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/bean/BeanDescCache.java @@ -13,7 +13,7 @@ package org.dromara.hutool.core.bean; import org.dromara.hutool.core.func.SerSupplier; -import org.dromara.hutool.core.map.WeakConcurrentMap; +import org.dromara.hutool.core.map.reference.WeakKeyConcurrentMap; /** * Bean属性缓存
@@ -27,7 +27,7 @@ public enum BeanDescCache { */ INSTANCE; - private final WeakConcurrentMap, BeanDesc> bdCache = new WeakConcurrentMap<>(); + private final WeakKeyConcurrentMap, BeanDesc> bdCache = new WeakKeyConcurrentMap<>(); /** * 获得属性名和{@link BeanDesc}Map映射 diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/bean/BeanInfoCache.java b/hutool-core/src/main/java/org/dromara/hutool/core/bean/BeanInfoCache.java index 038f0240a..005f33e0b 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/bean/BeanInfoCache.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/bean/BeanInfoCache.java @@ -13,8 +13,8 @@ package org.dromara.hutool.core.bean; import org.dromara.hutool.core.func.SerSupplier; -import org.dromara.hutool.core.map.ReferenceConcurrentMap; -import org.dromara.hutool.core.map.WeakConcurrentMap; +import org.dromara.hutool.core.map.reference.ReferenceKeyConcurrentMap; +import org.dromara.hutool.core.map.reference.WeakKeyConcurrentMap; import java.beans.PropertyDescriptor; import java.util.Map; @@ -31,8 +31,8 @@ public enum BeanInfoCache { */ INSTANCE; - private final WeakConcurrentMap, Map> pdCache = new WeakConcurrentMap<>(); - private final WeakConcurrentMap, Map> ignoreCasePdCache = new WeakConcurrentMap<>(); + private final WeakKeyConcurrentMap, Map> pdCache = new WeakKeyConcurrentMap<>(); + private final WeakKeyConcurrentMap, Map> ignoreCasePdCache = new WeakKeyConcurrentMap<>(); /** * 获得属性名和{@link PropertyDescriptor}Map映射 @@ -86,10 +86,10 @@ public enum BeanInfoCache { * 根据是否忽略字段名的大小写,返回不用Cache对象 * * @param ignoreCase 是否忽略大小写 - * @return {@link ReferenceConcurrentMap} + * @return {@link ReferenceKeyConcurrentMap} * @since 5.4.1 */ - private ReferenceConcurrentMap, Map> getCache(final boolean ignoreCase) { + private ReferenceKeyConcurrentMap, Map> getCache(final boolean ignoreCase) { return ignoreCase ? ignoreCasePdCache : pdCache; } } diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/cache/SimpleCache.java b/hutool-core/src/main/java/org/dromara/hutool/core/cache/SimpleCache.java index 79543ddd8..b48134b23 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/cache/SimpleCache.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/cache/SimpleCache.java @@ -17,8 +17,8 @@ import org.dromara.hutool.core.func.SerSupplier; import org.dromara.hutool.core.lang.Assert; import org.dromara.hutool.core.lang.mutable.Mutable; import org.dromara.hutool.core.lang.mutable.MutableObj; -import org.dromara.hutool.core.map.SafeConcurrentHashMap; -import org.dromara.hutool.core.map.WeakConcurrentMap; +import org.dromara.hutool.core.map.concurrent.SafeConcurrentHashMap; +import org.dromara.hutool.core.map.reference.WeakKeyConcurrentMap; import java.io.Serializable; import java.util.Iterator; @@ -33,7 +33,7 @@ import java.util.function.Predicate; import java.util.stream.Collectors; /** - * 简单缓存,无超时实现,默认使用{@link WeakConcurrentMap}实现缓存自动清理 + * 简单缓存,无超时实现,默认使用{@link WeakKeyConcurrentMap}实现缓存自动清理 * * @param 键类型 * @param 值类型 @@ -57,7 +57,7 @@ public class SimpleCache implements Iterable>, Serializabl * 构造,默认使用{@link WeakHashMap}实现缓存自动清理 */ public SimpleCache() { - this(new WeakConcurrentMap<>()); + this(new WeakKeyConcurrentMap<>()); } /** diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/cache/impl/AbstractCache.java b/hutool-core/src/main/java/org/dromara/hutool/core/cache/impl/AbstractCache.java index e7ee0e6ac..17c8647ab 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/cache/impl/AbstractCache.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/cache/impl/AbstractCache.java @@ -17,7 +17,7 @@ import org.dromara.hutool.core.cache.CacheListener; import org.dromara.hutool.core.func.SerSupplier; import org.dromara.hutool.core.lang.mutable.Mutable; import org.dromara.hutool.core.lang.mutable.MutableObj; -import org.dromara.hutool.core.map.SafeConcurrentHashMap; +import org.dromara.hutool.core.map.concurrent.SafeConcurrentHashMap; import java.util.Iterator; import java.util.Map; diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/cache/impl/WeakCache.java b/hutool-core/src/main/java/org/dromara/hutool/core/cache/impl/WeakCache.java index 05ad38dbf..e14a2f337 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/cache/impl/WeakCache.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/cache/impl/WeakCache.java @@ -15,7 +15,7 @@ package org.dromara.hutool.core.cache.impl; import org.dromara.hutool.core.cache.CacheListener; import org.dromara.hutool.core.lang.Opt; import org.dromara.hutool.core.lang.mutable.Mutable; -import org.dromara.hutool.core.map.WeakConcurrentMap; +import org.dromara.hutool.core.map.reference.WeakKeyConcurrentMap; import java.lang.ref.Reference; @@ -39,14 +39,14 @@ public class WeakCache extends TimedCache{ * @param timeout 超时时常,单位毫秒,-1或0表示无限制 */ public WeakCache(final long timeout) { - super(timeout, new WeakConcurrentMap<>()); + super(timeout, new WeakKeyConcurrentMap<>()); } @Override public WeakCache setListener(final CacheListener listener) { super.setListener(listener); - final WeakConcurrentMap, CacheObj> map = (WeakConcurrentMap, CacheObj>) this.cacheMap; + final WeakKeyConcurrentMap, CacheObj> map = (WeakKeyConcurrentMap, CacheObj>) this.cacheMap; // WeakKey回收之后,key对应的值已经是null了,因此此处的key也为null map.setPurgeListener((key, value)-> listener.onRemove(Opt.ofNullable(key).map(Reference::get).map(Mutable::get).get(), value.getValue())); diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/collection/ConcurrentHashSet.java b/hutool-core/src/main/java/org/dromara/hutool/core/collection/ConcurrentHashSet.java index a023e1e48..f1f47f067 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/collection/ConcurrentHashSet.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/collection/ConcurrentHashSet.java @@ -13,7 +13,7 @@ package org.dromara.hutool.core.collection; import org.dromara.hutool.core.collection.set.SetFromMap; -import org.dromara.hutool.core.map.SafeConcurrentHashMap; +import org.dromara.hutool.core.map.concurrent.SafeConcurrentHashMap; import java.util.Collection; diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/convert/RegisterConverter.java b/hutool-core/src/main/java/org/dromara/hutool/core/convert/RegisterConverter.java index 77694dcc4..7a583fd30 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/convert/RegisterConverter.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/convert/RegisterConverter.java @@ -17,7 +17,7 @@ import org.dromara.hutool.core.lang.Opt; import org.dromara.hutool.core.lang.tuple.Pair; import org.dromara.hutool.core.lang.tuple.Triple; import org.dromara.hutool.core.lang.tuple.Tuple; -import org.dromara.hutool.core.map.SafeConcurrentHashMap; +import org.dromara.hutool.core.map.concurrent.SafeConcurrentHashMap; import org.dromara.hutool.core.reflect.TypeUtil; import javax.xml.datatype.XMLGregorianCalendar; diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/convert/impl/EnumConverter.java b/hutool-core/src/main/java/org/dromara/hutool/core/convert/impl/EnumConverter.java index 5f91d6b85..c12b55229 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/convert/impl/EnumConverter.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/convert/impl/EnumConverter.java @@ -16,7 +16,7 @@ import org.dromara.hutool.core.convert.AbstractConverter; import org.dromara.hutool.core.convert.ConvertException; import org.dromara.hutool.core.lang.EnumItem; import org.dromara.hutool.core.map.MapUtil; -import org.dromara.hutool.core.map.WeakConcurrentMap; +import org.dromara.hutool.core.map.reference.WeakKeyConcurrentMap; import org.dromara.hutool.core.reflect.ClassUtil; import org.dromara.hutool.core.reflect.method.MethodUtil; import org.dromara.hutool.core.reflect.ModifierUtil; @@ -42,7 +42,7 @@ public class EnumConverter extends AbstractConverter { */ public static final EnumConverter INSTANCE = new EnumConverter(); - private static final WeakConcurrentMap, Map, Method>> VALUE_OF_METHOD_CACHE = new WeakConcurrentMap<>(); + private static final WeakKeyConcurrentMap, Map, Method>> VALUE_OF_METHOD_CACHE = new WeakKeyConcurrentMap<>(); @Override protected Object convertInternal(final Class targetClass, final Object value) { diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/data/CreditCodeUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/data/CreditCodeUtil.java index f30ceb899..f995d9500 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/data/CreditCodeUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/data/CreditCodeUtil.java @@ -12,7 +12,7 @@ package org.dromara.hutool.core.data; -import org.dromara.hutool.core.map.SafeConcurrentHashMap; +import org.dromara.hutool.core.map.concurrent.SafeConcurrentHashMap; import org.dromara.hutool.core.regex.PatternPool; import org.dromara.hutool.core.regex.ReUtil; import org.dromara.hutool.core.text.StrUtil; diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/date/format/FastDatePrinter.java b/hutool-core/src/main/java/org/dromara/hutool/core/date/format/FastDatePrinter.java index b55045428..c602a1814 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/date/format/FastDatePrinter.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/date/format/FastDatePrinter.java @@ -14,7 +14,7 @@ package org.dromara.hutool.core.date.format; import org.dromara.hutool.core.date.DateException; import org.dromara.hutool.core.date.format.parser.FastDateParser; -import org.dromara.hutool.core.map.SafeConcurrentHashMap; +import org.dromara.hutool.core.map.concurrent.SafeConcurrentHashMap; import java.io.IOException; import java.io.ObjectInputStream; diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/date/format/FormatCache.java b/hutool-core/src/main/java/org/dromara/hutool/core/date/format/FormatCache.java index 64d1ca3d5..c154adb51 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/date/format/FormatCache.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/date/format/FormatCache.java @@ -14,7 +14,7 @@ package org.dromara.hutool.core.date.format; import org.dromara.hutool.core.lang.Assert; import org.dromara.hutool.core.lang.tuple.Tuple; -import org.dromara.hutool.core.map.SafeConcurrentHashMap; +import org.dromara.hutool.core.map.concurrent.SafeConcurrentHashMap; import java.text.DateFormat; import java.text.Format; diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/date/format/GlobalCustomFormat.java b/hutool-core/src/main/java/org/dromara/hutool/core/date/format/GlobalCustomFormat.java index 767e49475..3265d92ef 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/date/format/GlobalCustomFormat.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/date/format/GlobalCustomFormat.java @@ -14,7 +14,7 @@ package org.dromara.hutool.core.date.format; import org.dromara.hutool.core.date.DateUtil; import org.dromara.hutool.core.lang.Assert; -import org.dromara.hutool.core.map.SafeConcurrentHashMap; +import org.dromara.hutool.core.map.concurrent.SafeConcurrentHashMap; import java.time.temporal.TemporalAccessor; import java.util.Date; diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/date/format/parser/FastDateParser.java b/hutool-core/src/main/java/org/dromara/hutool/core/date/format/parser/FastDateParser.java index b5809c2ca..3780bf2a7 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/date/format/parser/FastDateParser.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/date/format/parser/FastDateParser.java @@ -16,7 +16,7 @@ import org.dromara.hutool.core.date.DateException; import org.dromara.hutool.core.date.format.FastDateFormat; import org.dromara.hutool.core.date.format.FastDatePrinter; import org.dromara.hutool.core.date.format.SimpleDateBasic; -import org.dromara.hutool.core.map.SafeConcurrentHashMap; +import org.dromara.hutool.core.map.concurrent.SafeConcurrentHashMap; import java.io.IOException; import java.io.ObjectInputStream; diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/func/LambdaFactory.java b/hutool-core/src/main/java/org/dromara/hutool/core/func/LambdaFactory.java index 58b25d37c..4daa2d95d 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/func/LambdaFactory.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/func/LambdaFactory.java @@ -15,7 +15,7 @@ package org.dromara.hutool.core.func; import org.dromara.hutool.core.exception.HutoolException; import org.dromara.hutool.core.lang.Assert; import org.dromara.hutool.core.lang.mutable.MutableEntry; -import org.dromara.hutool.core.map.WeakConcurrentMap; +import org.dromara.hutool.core.map.reference.WeakKeyConcurrentMap; import org.dromara.hutool.core.reflect.*; import org.dromara.hutool.core.reflect.lookup.LookupUtil; import org.dromara.hutool.core.reflect.method.MethodTypeUtil; @@ -37,7 +37,7 @@ public class LambdaFactory { throw new IllegalAccessException(); } - private static final Map, Executable>, Object> CACHE = new WeakConcurrentMap<>(); + private static final Map, Executable>, Object> CACHE = new WeakKeyConcurrentMap<>(); /** * 构建Lambda diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/func/LambdaUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/func/LambdaUtil.java index e2867f216..ead7b6429 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/func/LambdaUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/func/LambdaUtil.java @@ -17,7 +17,7 @@ import org.dromara.hutool.core.classloader.ClassLoaderUtil; import org.dromara.hutool.core.exception.HutoolException; import org.dromara.hutool.core.lang.Assert; import org.dromara.hutool.core.lang.Opt; -import org.dromara.hutool.core.map.WeakConcurrentMap; +import org.dromara.hutool.core.map.reference.WeakKeyConcurrentMap; import org.dromara.hutool.core.reflect.ClassDescUtil; import org.dromara.hutool.core.reflect.method.MethodUtil; import org.dromara.hutool.core.reflect.ModifierUtil; @@ -37,7 +37,7 @@ import java.util.function.*; */ public class LambdaUtil { - private static final WeakConcurrentMap CACHE = new WeakConcurrentMap<>(); + private static final WeakKeyConcurrentMap CACHE = new WeakKeyConcurrentMap<>(); /** * 通过对象的方法或类的静态方法引用,获取lambda实现类 diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/lang/Singleton.java b/hutool-core/src/main/java/org/dromara/hutool/core/lang/Singleton.java index 2ef6f129b..dd5b7af25 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/lang/Singleton.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/lang/Singleton.java @@ -14,7 +14,7 @@ package org.dromara.hutool.core.lang; import org.dromara.hutool.core.array.ArrayUtil; import org.dromara.hutool.core.func.SerSupplier; -import org.dromara.hutool.core.map.SafeConcurrentHashMap; +import org.dromara.hutool.core.map.concurrent.SafeConcurrentHashMap; import org.dromara.hutool.core.reflect.ConstructorUtil; import org.dromara.hutool.core.text.StrUtil; diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/lang/intern/WeakIntern.java b/hutool-core/src/main/java/org/dromara/hutool/core/lang/intern/WeakIntern.java index a006fa008..1f7611bde 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/lang/intern/WeakIntern.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/lang/intern/WeakIntern.java @@ -12,7 +12,7 @@ package org.dromara.hutool.core.lang.intern; -import org.dromara.hutool.core.map.WeakConcurrentMap; +import org.dromara.hutool.core.map.reference.WeakKeyConcurrentMap; import java.lang.ref.WeakReference; @@ -25,7 +25,7 @@ import java.lang.ref.WeakReference; */ public class WeakIntern implements Intern { - private final WeakConcurrentMap> cache = new WeakConcurrentMap<>(); + private final WeakKeyConcurrentMap> cache = new WeakKeyConcurrentMap<>(); @Override public T intern(final T sample) { diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/map/MapUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/map/MapUtil.java index 48e87c9b6..4e0264c80 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/map/MapUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/map/MapUtil.java @@ -18,6 +18,7 @@ import org.dromara.hutool.core.collection.ListUtil; import org.dromara.hutool.core.collection.iter.ArrayIter; import org.dromara.hutool.core.collection.iter.IterUtil; import org.dromara.hutool.core.lang.Assert; +import org.dromara.hutool.core.map.concurrent.SafeConcurrentHashMap; import org.dromara.hutool.core.reflect.ConstructorUtil; import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.util.ObjUtil; diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/map/concurrent/ConcurrentLinkedHashMap.java b/hutool-core/src/main/java/org/dromara/hutool/core/map/concurrent/ConcurrentLinkedHashMap.java index 52ce55c0e..ae49de9e6 100755 --- a/hutool-core/src/main/java/org/dromara/hutool/core/map/concurrent/ConcurrentLinkedHashMap.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/map/concurrent/ConcurrentLinkedHashMap.java @@ -15,7 +15,6 @@ import org.dromara.hutool.core.collection.queue.DiscardingQueue; import org.dromara.hutool.core.collection.queue.Linked; import org.dromara.hutool.core.collection.queue.LinkedDeque; import org.dromara.hutool.core.lang.Assert; -import org.dromara.hutool.core.map.SafeConcurrentHashMap; import org.dromara.hutool.core.util.RuntimeUtil; import java.io.InvalidObjectException; diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/map/SafeConcurrentHashMap.java b/hutool-core/src/main/java/org/dromara/hutool/core/map/concurrent/SafeConcurrentHashMap.java similarity index 94% rename from hutool-core/src/main/java/org/dromara/hutool/core/map/SafeConcurrentHashMap.java rename to hutool-core/src/main/java/org/dromara/hutool/core/map/concurrent/SafeConcurrentHashMap.java index cd9248100..ead40270c 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/map/SafeConcurrentHashMap.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/map/concurrent/SafeConcurrentHashMap.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023 looly(loolly@aliyun.com) + * Copyright (c) 2023-2024. looly(loolly@aliyun.com) * Hutool is licensed under Mulan PSL v2. * You can use this software according to the terms and conditions of the Mulan PSL v2. * You may obtain a copy of Mulan PSL v2 at: @@ -10,8 +10,9 @@ * See the Mulan PSL v2 for more details. */ -package org.dromara.hutool.core.map; +package org.dromara.hutool.core.map.concurrent; +import org.dromara.hutool.core.map.MapUtil; import org.dromara.hutool.core.util.JdkUtil; import java.util.Map; diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/map/ReferenceConcurrentMap.java b/hutool-core/src/main/java/org/dromara/hutool/core/map/reference/ReferenceKeyConcurrentMap.java similarity index 95% rename from hutool-core/src/main/java/org/dromara/hutool/core/map/ReferenceConcurrentMap.java rename to hutool-core/src/main/java/org/dromara/hutool/core/map/reference/ReferenceKeyConcurrentMap.java index 8c89e6ffd..89b10e242 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/map/ReferenceConcurrentMap.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/map/reference/ReferenceKeyConcurrentMap.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023 looly(loolly@aliyun.com) + * Copyright (c) 2023-2024. looly(loolly@aliyun.com) * Hutool is licensed under Mulan PSL v2. * You can use this software according to the terms and conditions of the Mulan PSL v2. * You may obtain a copy of Mulan PSL v2 at: @@ -10,7 +10,7 @@ * See the Mulan PSL v2 for more details. */ -package org.dromara.hutool.core.map; +package org.dromara.hutool.core.map.reference; import org.dromara.hutool.core.collection.CollUtil; import org.dromara.hutool.core.util.ObjUtil; @@ -40,9 +40,8 @@ import java.util.stream.Collectors; * @param 键类型 * @param 值类型 * @author looly - * @since 5.8.0 */ -public class ReferenceConcurrentMap implements ConcurrentMap, Iterable>, Serializable { +public class ReferenceKeyConcurrentMap implements ConcurrentMap, Iterable>, Serializable { private static final long serialVersionUID = 1L; final ConcurrentMap, V> raw; @@ -61,7 +60,7 @@ public class ReferenceConcurrentMap implements ConcurrentMap, Iterab * @param raw {@link ConcurrentMap}实现 * @param referenceType Reference类型 */ - public ReferenceConcurrentMap(final ConcurrentMap, V> raw, final ReferenceUtil.ReferenceType referenceType) { + public ReferenceKeyConcurrentMap(final ConcurrentMap, V> raw, final ReferenceUtil.ReferenceType referenceType) { this.raw = raw; this.keyType = referenceType; lastQueue = new ReferenceQueue<>(); diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/map/SoftConcurrentMap.java b/hutool-core/src/main/java/org/dromara/hutool/core/map/reference/SoftKeyConcurrentMap.java old mode 100755 new mode 100644 similarity index 73% rename from hutool-core/src/main/java/org/dromara/hutool/core/map/SoftConcurrentMap.java rename to hutool-core/src/main/java/org/dromara/hutool/core/map/reference/SoftKeyConcurrentMap.java index 8ddee5276..0871d500b --- a/hutool-core/src/main/java/org/dromara/hutool/core/map/SoftConcurrentMap.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/map/reference/SoftKeyConcurrentMap.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023 looly(loolly@aliyun.com) + * Copyright (c) 2023-2024. looly(loolly@aliyun.com) * Hutool is licensed under Mulan PSL v2. * You can use this software according to the terms and conditions of the Mulan PSL v2. * You may obtain a copy of Mulan PSL v2 at: @@ -10,8 +10,9 @@ * See the Mulan PSL v2 for more details. */ -package org.dromara.hutool.core.map; +package org.dromara.hutool.core.map.reference; +import org.dromara.hutool.core.map.concurrent.SafeConcurrentHashMap; import org.dromara.hutool.core.util.ReferenceUtil; import java.lang.ref.Reference; @@ -25,13 +26,13 @@ import java.util.concurrent.ConcurrentMap; * @author looly * @since 6.0.0 */ -public class SoftConcurrentMap extends ReferenceConcurrentMap { +public class SoftKeyConcurrentMap extends ReferenceKeyConcurrentMap { private static final long serialVersionUID = 1L; /** * 构造 */ - public SoftConcurrentMap() { + public SoftKeyConcurrentMap() { this(new SafeConcurrentHashMap<>()); } @@ -40,7 +41,7 @@ public class SoftConcurrentMap extends ReferenceConcurrentMap { * * @param raw {@link ConcurrentMap}实现 */ - public SoftConcurrentMap(final ConcurrentMap, V> raw) { + public SoftKeyConcurrentMap(final ConcurrentMap, V> raw) { super(raw, ReferenceUtil.ReferenceType.SOFT); } } diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/map/WeakConcurrentMap.java b/hutool-core/src/main/java/org/dromara/hutool/core/map/reference/WeakKeyConcurrentMap.java similarity index 74% rename from hutool-core/src/main/java/org/dromara/hutool/core/map/WeakConcurrentMap.java rename to hutool-core/src/main/java/org/dromara/hutool/core/map/reference/WeakKeyConcurrentMap.java index 79dbc184e..3bae31b25 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/map/WeakConcurrentMap.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/map/reference/WeakKeyConcurrentMap.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023 looly(loolly@aliyun.com) + * Copyright (c) 2023-2024. looly(loolly@aliyun.com) * Hutool is licensed under Mulan PSL v2. * You can use this software according to the terms and conditions of the Mulan PSL v2. * You may obtain a copy of Mulan PSL v2 at: @@ -10,8 +10,9 @@ * See the Mulan PSL v2 for more details. */ -package org.dromara.hutool.core.map; +package org.dromara.hutool.core.map.reference; +import org.dromara.hutool.core.map.concurrent.SafeConcurrentHashMap; import org.dromara.hutool.core.util.ReferenceUtil; import java.lang.ref.Reference; @@ -26,13 +27,13 @@ import java.util.concurrent.ConcurrentMap; * @author looly * @since 5.8.0 */ -public class WeakConcurrentMap extends ReferenceConcurrentMap { +public class WeakKeyConcurrentMap extends ReferenceKeyConcurrentMap { private static final long serialVersionUID = 1L; /** * 构造 */ - public WeakConcurrentMap() { + public WeakKeyConcurrentMap() { this(new SafeConcurrentHashMap<>()); } @@ -41,7 +42,7 @@ public class WeakConcurrentMap extends ReferenceConcurrentMap { * * @param raw {@link ConcurrentMap}实现 */ - public WeakConcurrentMap(final ConcurrentMap, V> raw) { + public WeakKeyConcurrentMap(final ConcurrentMap, V> raw) { super(raw, ReferenceUtil.ReferenceType.WEAK); } } diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/map/reference/package-info.java b/hutool-core/src/main/java/org/dromara/hutool/core/map/reference/package-info.java new file mode 100644 index 000000000..42f8658cc --- /dev/null +++ b/hutool-core/src/main/java/org/dromara/hutool/core/map/reference/package-info.java @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2024. looly(loolly@aliyun.com) + * Hutool is licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * https://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + */ + +/** + * 弱引用Map实现 + * + * @author Looly + */ +package org.dromara.hutool.core.map.reference; diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/reflect/ActualTypeMapperPool.java b/hutool-core/src/main/java/org/dromara/hutool/core/reflect/ActualTypeMapperPool.java index f7b304ffa..307bee0ee 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/reflect/ActualTypeMapperPool.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/reflect/ActualTypeMapperPool.java @@ -13,7 +13,7 @@ package org.dromara.hutool.core.reflect; import org.dromara.hutool.core.convert.Convert; -import org.dromara.hutool.core.map.WeakConcurrentMap; +import org.dromara.hutool.core.map.reference.WeakKeyConcurrentMap; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; @@ -29,7 +29,7 @@ import java.util.Map; */ public class ActualTypeMapperPool { - private static final WeakConcurrentMap> CACHE = new WeakConcurrentMap<>(); + private static final WeakKeyConcurrentMap> CACHE = new WeakKeyConcurrentMap<>(); /** * 获取泛型变量和泛型实际类型的对应关系Map diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/reflect/ConstructorUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/reflect/ConstructorUtil.java index 570a5f068..57e0ffd0e 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/reflect/ConstructorUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/reflect/ConstructorUtil.java @@ -14,7 +14,7 @@ package org.dromara.hutool.core.reflect; import org.dromara.hutool.core.exception.HutoolException; import org.dromara.hutool.core.lang.Assert; -import org.dromara.hutool.core.map.WeakConcurrentMap; +import org.dromara.hutool.core.map.reference.WeakKeyConcurrentMap; import org.dromara.hutool.core.reflect.creator.DefaultObjectCreator; import org.dromara.hutool.core.reflect.creator.PossibleObjectCreator; @@ -29,7 +29,7 @@ public class ConstructorUtil { /** * 构造对象缓存 */ - private static final WeakConcurrentMap, Constructor[]> CONSTRUCTORS_CACHE = new WeakConcurrentMap<>(); + private static final WeakKeyConcurrentMap, Constructor[]> CONSTRUCTORS_CACHE = new WeakKeyConcurrentMap<>(); // --------------------------------------------------------------------------------------------------------- Constructor /** diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/reflect/FieldUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/reflect/FieldUtil.java index eca7f2c3d..3ca82868f 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/reflect/FieldUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/reflect/FieldUtil.java @@ -17,7 +17,7 @@ import org.dromara.hutool.core.convert.Convert; import org.dromara.hutool.core.exception.HutoolException; import org.dromara.hutool.core.lang.Assert; import org.dromara.hutool.core.map.MapUtil; -import org.dromara.hutool.core.map.WeakConcurrentMap; +import org.dromara.hutool.core.map.reference.WeakKeyConcurrentMap; import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.array.ArrayUtil; @@ -36,7 +36,7 @@ public class FieldUtil { /** * 字段缓存 */ - private static final WeakConcurrentMap, Field[]> FIELDS_CACHE = new WeakConcurrentMap<>(); + private static final WeakKeyConcurrentMap, Field[]> FIELDS_CACHE = new WeakKeyConcurrentMap<>(); // --------------------------------------------------------------------------------------------------------- Field diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/reflect/method/MethodScanner.java b/hutool-core/src/main/java/org/dromara/hutool/core/reflect/method/MethodScanner.java index a02c9d7b4..8b7208936 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/reflect/method/MethodScanner.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/reflect/method/MethodScanner.java @@ -16,7 +16,7 @@ import org.dromara.hutool.core.array.ArrayUtil; import org.dromara.hutool.core.lang.mutable.Mutable; import org.dromara.hutool.core.lang.mutable.MutableObj; import org.dromara.hutool.core.map.MapUtil; -import org.dromara.hutool.core.map.WeakConcurrentMap; +import org.dromara.hutool.core.map.reference.WeakKeyConcurrentMap; import org.dromara.hutool.core.reflect.ClassUtil; import java.lang.reflect.Method; @@ -63,7 +63,7 @@ import java.util.function.Predicate; *

缓存 *

对于{@link #getDeclaredMethods}与{@link #getMethods}方法与基于这两个方法实现的, * 所有{@code xxxFromMethods}与{@code xxxFromDeclaredMethods}方法, - * 都提供了缓存基于{@link WeakConcurrentMap}的缓存支持。
+ * 都提供了缓存基于{@link WeakKeyConcurrentMap}的缓存支持。
* {@link #getAllMethods}与所有{@code xxxFromAllMethods}方法都基于{@link #getDeclaredMethods}实现, * 但是每次全量查找,都需要重新遍历类层级结构,因此会带来一定的额外的性能损耗。
* 缓存在GC时会被回收,但是也可以通过{@link #clearCaches}手动清除缓存。 @@ -87,12 +87,12 @@ public class MethodScanner { /** * 方法缓存 */ - private static final WeakConcurrentMap, Method[]> METHODS_CACHE = new WeakConcurrentMap<>(); + private static final WeakKeyConcurrentMap, Method[]> METHODS_CACHE = new WeakKeyConcurrentMap<>(); /** * 直接声明的方法缓存 */ - private static final WeakConcurrentMap, Method[]> DECLARED_METHODS_CACHE = new WeakConcurrentMap<>(); + private static final WeakKeyConcurrentMap, Method[]> DECLARED_METHODS_CACHE = new WeakKeyConcurrentMap<>(); // region ============= basic ============= diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/reflect/method/MethodUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/reflect/method/MethodUtil.java index 705ad59cf..6b44de274 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/reflect/method/MethodUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/reflect/method/MethodUtil.java @@ -22,7 +22,7 @@ import org.dromara.hutool.core.exception.ExceptionUtil; import org.dromara.hutool.core.exception.HutoolException; import org.dromara.hutool.core.lang.Assert; import org.dromara.hutool.core.lang.Singleton; -import org.dromara.hutool.core.map.WeakConcurrentMap; +import org.dromara.hutool.core.map.reference.WeakKeyConcurrentMap; import org.dromara.hutool.core.reflect.ClassUtil; import org.dromara.hutool.core.reflect.ConstructorUtil; import org.dromara.hutool.core.reflect.ModifierUtil; @@ -44,11 +44,11 @@ public class MethodUtil { /** * 方法缓存 */ - private static final WeakConcurrentMap, Method[]> METHODS_CACHE = new WeakConcurrentMap<>(); + private static final WeakKeyConcurrentMap, Method[]> METHODS_CACHE = new WeakKeyConcurrentMap<>(); /** * 直接声明的方法缓存 */ - private static final WeakConcurrentMap, Method[]> DECLARED_METHODS_CACHE = new WeakConcurrentMap<>(); + private static final WeakKeyConcurrentMap, Method[]> DECLARED_METHODS_CACHE = new WeakKeyConcurrentMap<>(); // --------------------------------------------------------------------------------------------------------- method diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/regex/PatternPool.java b/hutool-core/src/main/java/org/dromara/hutool/core/regex/PatternPool.java index cba5f5932..23976809c 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/regex/PatternPool.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/regex/PatternPool.java @@ -12,7 +12,7 @@ package org.dromara.hutool.core.regex; -import org.dromara.hutool.core.map.WeakConcurrentMap; +import org.dromara.hutool.core.map.reference.WeakKeyConcurrentMap; import java.util.regex.Pattern; @@ -209,7 +209,7 @@ public class PatternPool { /** * Pattern池 */ - private static final WeakConcurrentMap POOL = new WeakConcurrentMap<>(); + private static final WeakKeyConcurrentMap POOL = new WeakKeyConcurrentMap<>(); /** * 先从Pattern池中查找正则对应的{@link Pattern},找不到则编译正则表达式并入池。 diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/stream/TransformableWrappedStream.java b/hutool-core/src/main/java/org/dromara/hutool/core/stream/TransformableWrappedStream.java index 13abe6564..ec5762f84 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/stream/TransformableWrappedStream.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/stream/TransformableWrappedStream.java @@ -20,7 +20,7 @@ import org.dromara.hutool.core.lang.Console; import org.dromara.hutool.core.lang.mutable.MutableInt; import org.dromara.hutool.core.lang.mutable.MutableObj; import org.dromara.hutool.core.map.MapUtil; -import org.dromara.hutool.core.map.SafeConcurrentHashMap; +import org.dromara.hutool.core.map.concurrent.SafeConcurrentHashMap; import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/text/AntPathMatcher.java b/hutool-core/src/main/java/org/dromara/hutool/core/text/AntPathMatcher.java index ced09b940..a005fe3bf 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/text/AntPathMatcher.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/text/AntPathMatcher.java @@ -13,7 +13,7 @@ package org.dromara.hutool.core.text; -import org.dromara.hutool.core.map.SafeConcurrentHashMap; +import org.dromara.hutool.core.map.concurrent.SafeConcurrentHashMap; import org.dromara.hutool.core.text.split.SplitUtil; import java.util.ArrayList; diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/text/placeholder/StrFormatter.java b/hutool-core/src/main/java/org/dromara/hutool/core/text/placeholder/StrFormatter.java index 27e0fc771..2b9087b7d 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/text/placeholder/StrFormatter.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/text/placeholder/StrFormatter.java @@ -14,7 +14,7 @@ package org.dromara.hutool.core.text.placeholder; import org.dromara.hutool.core.array.ArrayUtil; import org.dromara.hutool.core.lang.mutable.MutableEntry; -import org.dromara.hutool.core.map.WeakConcurrentMap; +import org.dromara.hutool.core.map.reference.WeakKeyConcurrentMap; import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.placeholder.template.NamedPlaceholderStrTemplate; import org.dromara.hutool.core.text.placeholder.template.SinglePlaceholderStrTemplate; @@ -27,7 +27,7 @@ import java.util.Map; * @author Looly */ public class StrFormatter { - private static final WeakConcurrentMap, StrTemplate> CACHE = new WeakConcurrentMap<>(); + private static final WeakKeyConcurrentMap, StrTemplate> CACHE = new WeakKeyConcurrentMap<>(); /** * 格式化字符串
diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/map/Issue2349Test.java b/hutool-core/src/test/java/org/dromara/hutool/core/map/Issue2349Test.java index 3cdfbb1e2..4e93c9fbd 100644 --- a/hutool-core/src/test/java/org/dromara/hutool/core/map/Issue2349Test.java +++ b/hutool-core/src/test/java/org/dromara/hutool/core/map/Issue2349Test.java @@ -12,6 +12,7 @@ package org.dromara.hutool.core.map; +import org.dromara.hutool.core.map.concurrent.SafeConcurrentHashMap; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledForJreRange; diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/map/WeakConcurrentMapTest.java b/hutool-core/src/test/java/org/dromara/hutool/core/map/WeakConcurrentMapTest.java index 1d35e89da..cf98fed34 100644 --- a/hutool-core/src/test/java/org/dromara/hutool/core/map/WeakConcurrentMapTest.java +++ b/hutool-core/src/test/java/org/dromara/hutool/core/map/WeakConcurrentMapTest.java @@ -12,6 +12,7 @@ package org.dromara.hutool.core.map; +import org.dromara.hutool.core.map.reference.WeakKeyConcurrentMap; import org.dromara.hutool.core.thread.ConcurrencyTester; import org.dromara.hutool.core.thread.ThreadUtil; import org.dromara.hutool.core.util.ObjUtil; @@ -23,7 +24,7 @@ public class WeakConcurrentMapTest { @Test public void putAndGetTest(){ - final WeakConcurrentMap map = new WeakConcurrentMap<>(); + final WeakKeyConcurrentMap map = new WeakKeyConcurrentMap<>(); Object key1 = new Object(); final Object value1 = new Object(); @@ -57,7 +58,7 @@ public class WeakConcurrentMapTest { @Test public void getConcurrencyTest(){ - final WeakConcurrentMap cache = new WeakConcurrentMap<>(); + final WeakKeyConcurrentMap cache = new WeakKeyConcurrentMap<>(); final ConcurrencyTester tester = new ConcurrencyTester(2000); tester.test(()-> cache.computeIfAbsent("aaa" + RandomUtil.randomInt(2), (key)-> "aaaValue")); diff --git a/hutool-db/src/main/java/org/dromara/hutool/db/dialect/DialectFactory.java b/hutool-db/src/main/java/org/dromara/hutool/db/dialect/DialectFactory.java index 1dde6a074..c8a69785f 100644 --- a/hutool-db/src/main/java/org/dromara/hutool/db/dialect/DialectFactory.java +++ b/hutool-db/src/main/java/org/dromara/hutool/db/dialect/DialectFactory.java @@ -12,7 +12,7 @@ package org.dromara.hutool.db.dialect; -import org.dromara.hutool.core.map.SafeConcurrentHashMap; +import org.dromara.hutool.core.map.concurrent.SafeConcurrentHashMap; import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.db.config.DbConfig; import org.dromara.hutool.db.dialect.impl.*; diff --git a/hutool-db/src/main/java/org/dromara/hutool/db/ds/DSPool.java b/hutool-db/src/main/java/org/dromara/hutool/db/ds/DSPool.java index ecedde366..08e447353 100644 --- a/hutool-db/src/main/java/org/dromara/hutool/db/ds/DSPool.java +++ b/hutool-db/src/main/java/org/dromara/hutool/db/ds/DSPool.java @@ -15,7 +15,7 @@ package org.dromara.hutool.db.ds; import org.dromara.hutool.core.io.IoUtil; import org.dromara.hutool.core.lang.Singleton; import org.dromara.hutool.core.map.MapUtil; -import org.dromara.hutool.core.map.SafeConcurrentHashMap; +import org.dromara.hutool.core.map.concurrent.SafeConcurrentHashMap; import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.db.config.ConfigParser; import org.dromara.hutool.db.config.DbConfig; diff --git a/hutool-extra/src/main/java/org/dromara/hutool/extra/spring/cglib/BeanCopierCache.java b/hutool-extra/src/main/java/org/dromara/hutool/extra/spring/cglib/BeanCopierCache.java index baff186e2..62dcd5648 100644 --- a/hutool-extra/src/main/java/org/dromara/hutool/extra/spring/cglib/BeanCopierCache.java +++ b/hutool-extra/src/main/java/org/dromara/hutool/extra/spring/cglib/BeanCopierCache.java @@ -12,7 +12,7 @@ package org.dromara.hutool.extra.spring.cglib; -import org.dromara.hutool.core.map.WeakConcurrentMap; +import org.dromara.hutool.core.map.reference.WeakKeyConcurrentMap; import org.dromara.hutool.core.text.StrUtil; import org.springframework.cglib.beans.BeanCopier; import org.springframework.cglib.core.Converter; @@ -30,7 +30,7 @@ public enum BeanCopierCache { */ INSTANCE; - private final WeakConcurrentMap cache = new WeakConcurrentMap<>(); + private final WeakKeyConcurrentMap cache = new WeakKeyConcurrentMap<>(); /** * 获得类与转换器生成的key在{@link BeanCopier}的Map中对应的元素 diff --git a/hutool-http/src/main/java/org/dromara/hutool/http/html/HTMLFilter.java b/hutool-http/src/main/java/org/dromara/hutool/http/html/HTMLFilter.java index 3af740f26..6eb9e6087 100644 --- a/hutool-http/src/main/java/org/dromara/hutool/http/html/HTMLFilter.java +++ b/hutool-http/src/main/java/org/dromara/hutool/http/html/HTMLFilter.java @@ -13,7 +13,7 @@ package org.dromara.hutool.http.html; import org.dromara.hutool.core.lang.Console; -import org.dromara.hutool.core.map.SafeConcurrentHashMap; +import org.dromara.hutool.core.map.concurrent.SafeConcurrentHashMap; import org.dromara.hutool.core.text.CharUtil; import java.util.ArrayList; diff --git a/hutool-json/src/main/java/org/dromara/hutool/json/serialize/GlobalSerializeMapping.java b/hutool-json/src/main/java/org/dromara/hutool/json/serialize/GlobalSerializeMapping.java index 20fb561d0..b7210d080 100644 --- a/hutool-json/src/main/java/org/dromara/hutool/json/serialize/GlobalSerializeMapping.java +++ b/hutool-json/src/main/java/org/dromara/hutool/json/serialize/GlobalSerializeMapping.java @@ -12,7 +12,7 @@ package org.dromara.hutool.json.serialize; -import org.dromara.hutool.core.map.SafeConcurrentHashMap; +import org.dromara.hutool.core.map.concurrent.SafeConcurrentHashMap; import org.dromara.hutool.core.reflect.NullType; import org.dromara.hutool.core.util.ObjUtil; import org.dromara.hutool.json.JSON; diff --git a/hutool-json/src/main/java/org/dromara/hutool/json/writer/GlobalValueWriterMapping.java b/hutool-json/src/main/java/org/dromara/hutool/json/writer/GlobalValueWriterMapping.java index 061edf606..b8a909bba 100644 --- a/hutool-json/src/main/java/org/dromara/hutool/json/writer/GlobalValueWriterMapping.java +++ b/hutool-json/src/main/java/org/dromara/hutool/json/writer/GlobalValueWriterMapping.java @@ -12,7 +12,7 @@ package org.dromara.hutool.json.writer; -import org.dromara.hutool.core.map.SafeConcurrentHashMap; +import org.dromara.hutool.core.map.concurrent.SafeConcurrentHashMap; import org.dromara.hutool.core.reflect.NullType; import org.dromara.hutool.core.util.ObjUtil; diff --git a/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/ExcelWriter.java b/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/ExcelWriter.java index 3eab3c043..61cf3e6ef 100644 --- a/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/ExcelWriter.java +++ b/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/ExcelWriter.java @@ -24,7 +24,7 @@ import org.dromara.hutool.core.io.IoUtil; import org.dromara.hutool.core.io.file.FileUtil; import org.dromara.hutool.core.lang.Assert; import org.dromara.hutool.core.map.MapUtil; -import org.dromara.hutool.core.map.SafeConcurrentHashMap; +import org.dromara.hutool.core.map.concurrent.SafeConcurrentHashMap; import org.dromara.hutool.core.map.TableMap; import org.dromara.hutool.core.map.multi.RowKeyTable; import org.dromara.hutool.core.map.multi.Table; diff --git a/hutool-setting/src/main/java/org/dromara/hutool/setting/SettingUtil.java b/hutool-setting/src/main/java/org/dromara/hutool/setting/SettingUtil.java index b5b2bb024..f506fadad 100644 --- a/hutool-setting/src/main/java/org/dromara/hutool/setting/SettingUtil.java +++ b/hutool-setting/src/main/java/org/dromara/hutool/setting/SettingUtil.java @@ -14,7 +14,7 @@ package org.dromara.hutool.setting; import org.dromara.hutool.core.io.file.FileNameUtil; import org.dromara.hutool.core.io.resource.NoResourceException; -import org.dromara.hutool.core.map.SafeConcurrentHashMap; +import org.dromara.hutool.core.map.concurrent.SafeConcurrentHashMap; import org.dromara.hutool.core.text.StrUtil; import java.util.Map; diff --git a/hutool-setting/src/main/java/org/dromara/hutool/setting/profile/Profile.java b/hutool-setting/src/main/java/org/dromara/hutool/setting/profile/Profile.java index 6289d5038..061cca921 100644 --- a/hutool-setting/src/main/java/org/dromara/hutool/setting/profile/Profile.java +++ b/hutool-setting/src/main/java/org/dromara/hutool/setting/profile/Profile.java @@ -13,7 +13,7 @@ package org.dromara.hutool.setting.profile; import org.dromara.hutool.core.lang.Assert; -import org.dromara.hutool.core.map.SafeConcurrentHashMap; +import org.dromara.hutool.core.map.concurrent.SafeConcurrentHashMap; import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.setting.Setting; diff --git a/hutool-setting/src/main/java/org/dromara/hutool/setting/props/PropsUtil.java b/hutool-setting/src/main/java/org/dromara/hutool/setting/props/PropsUtil.java index d63b2ccf2..313e320b3 100644 --- a/hutool-setting/src/main/java/org/dromara/hutool/setting/props/PropsUtil.java +++ b/hutool-setting/src/main/java/org/dromara/hutool/setting/props/PropsUtil.java @@ -14,7 +14,7 @@ package org.dromara.hutool.setting.props; import org.dromara.hutool.core.io.file.FileNameUtil; import org.dromara.hutool.core.io.resource.NoResourceException; -import org.dromara.hutool.core.map.SafeConcurrentHashMap; +import org.dromara.hutool.core.map.concurrent.SafeConcurrentHashMap; import org.dromara.hutool.core.text.StrUtil; import java.util.Map;