From e9c93a273c4d5abc79affa12189a0b118e98f5bc Mon Sep 17 00:00:00 2001 From: ZhouXY108 Date: Tue, 3 Sep 2024 15:50:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=BF=E7=94=A8=20guava=20chache=20=E7=BC=93?= =?UTF-8?q?=E5=AD=98=20DateTimeFormatter=20=E5=AF=B9=E8=B1=A1=EF=BC=8C?= =?UTF-8?q?=E9=99=90=E5=88=B6=E7=BC=93=E5=AD=98=E6=95=B0=E9=87=8F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plusone/commons/util/DateTimeTools.java | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/main/java/xyz/zhouxy/plusone/commons/util/DateTimeTools.java b/src/main/java/xyz/zhouxy/plusone/commons/util/DateTimeTools.java index e11c97f..f0217d6 100644 --- a/src/main/java/xyz/zhouxy/plusone/commons/util/DateTimeTools.java +++ b/src/main/java/xyz/zhouxy/plusone/commons/util/DateTimeTools.java @@ -13,14 +13,14 @@ import java.util.Calendar; import java.util.Date; import java.util.TimeZone; -import org.apache.commons.lang3.StringUtils; +import javax.annotation.Nonnull; -import com.google.common.base.Preconditions; +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; -import xyz.zhouxy.plusone.commons.collection.SafeConcurrentHashMap; import xyz.zhouxy.plusone.commons.time.Quarter; import xyz.zhouxy.plusone.commons.time.YearQuarter; -import xyz.zhouxy.plusone.commons.collection.MapWrapper; /** * 日期时间工具类 @@ -32,11 +32,14 @@ public class DateTimeTools { /** * 缓存时间格式化器 */ - private static final MapWrapper DATE_TIME_FORMATTER_CACHE = MapWrapper - .wrap(new SafeConcurrentHashMap<>()) - .keyChecker(pattern -> Preconditions.checkArgument(StringUtils.isNotBlank(pattern), "The pattern could not be blank.")) - .valueChecker(formatter -> Preconditions.checkNotNull(formatter, "The formatter could not be null.")) - .build(); + private static final LoadingCache DATE_TIME_FORMATTER_CACHE = CacheBuilder.newBuilder() + .maximumSize(20) + .build(new CacheLoader() { + @Override + public DateTimeFormatter load(@Nonnull String pattern) throws Exception { + return DateTimeFormatter.ofPattern(pattern); + } + }); /** * 获取时间格式化器 @@ -45,7 +48,7 @@ public class DateTimeTools { * @return 时间格式化器 */ public static DateTimeFormatter getDateTimeFormatter(String pattern) { - return DATE_TIME_FORMATTER_CACHE.computeIfAbsent(pattern, DateTimeFormatter::ofPattern); + return DATE_TIME_FORMATTER_CACHE.getUnchecked(pattern); } /**