diff --git a/hsweb-core/pom.xml b/hsweb-core/pom.xml index e432f92e6..97cfaf4b6 100644 --- a/hsweb-core/pom.xml +++ b/hsweb-core/pom.xml @@ -118,7 +118,12 @@ jctools-core org.jctools - 2.1.2 + 4.0.1 + + + + io.netty + netty-common diff --git a/hsweb-core/src/main/java/org/hswebframework/web/context/ContextUtils.java b/hsweb-core/src/main/java/org/hswebframework/web/context/ContextUtils.java index 256ee95ee..96d2d77c6 100644 --- a/hsweb-core/src/main/java/org/hswebframework/web/context/ContextUtils.java +++ b/hsweb-core/src/main/java/org/hswebframework/web/context/ContextUtils.java @@ -17,6 +17,7 @@ public class ContextUtils { return contextThreadLocal.get(); } + @Deprecated public static Mono reactiveContext() { return Mono .subscriberContext() @@ -32,6 +33,7 @@ public class ContextUtils { })); } + @Deprecated public static Function acceptContext(Consumer contextConsumer) { return context -> { if (!context.hasKey(Context.class)) { diff --git a/hsweb-core/src/main/java/org/hswebframework/web/i18n/LocaleUtils.java b/hsweb-core/src/main/java/org/hswebframework/web/i18n/LocaleUtils.java index 44c524ae2..fc01cef1a 100644 --- a/hsweb-core/src/main/java/org/hswebframework/web/i18n/LocaleUtils.java +++ b/hsweb-core/src/main/java/org/hswebframework/web/i18n/LocaleUtils.java @@ -1,5 +1,6 @@ package org.hswebframework.web.i18n; +import io.netty.util.concurrent.FastThreadLocal; import lombok.AllArgsConstructor; import org.hswebframework.web.exception.I18nSupportException; import org.reactivestreams.Publisher; @@ -34,7 +35,7 @@ public final class LocaleUtils { public static final Locale DEFAULT_LOCALE = Locale.getDefault(); - private static final ThreadLocal CONTEXT_THREAD_LOCAL = new ThreadLocal<>(); + private static final FastThreadLocal CONTEXT_THREAD_LOCAL = new FastThreadLocal<>(); static MessageSource messageSource = UnsupportedMessageSource.instance(); diff --git a/hsweb-core/src/main/java/org/hswebframework/web/id/RandomIdGenerator.java b/hsweb-core/src/main/java/org/hswebframework/web/id/RandomIdGenerator.java index 7f96ec693..e607189a9 100644 --- a/hsweb-core/src/main/java/org/hswebframework/web/id/RandomIdGenerator.java +++ b/hsweb-core/src/main/java/org/hswebframework/web/id/RandomIdGenerator.java @@ -1,11 +1,18 @@ package org.hswebframework.web.id; +import io.netty.util.concurrent.FastThreadLocal; + import java.util.Base64; import java.util.concurrent.ThreadLocalRandom; public class RandomIdGenerator { - private final static ThreadLocal HOLDER = ThreadLocal.withInitial(() -> new byte[24]); + private final static FastThreadLocal HOLDER = new FastThreadLocal() { + @Override + protected byte[] initialValue() { + return new byte[24]; + } + }; public static String random() { diff --git a/hsweb-core/src/main/java/org/hswebframework/web/utils/DigestUtils.java b/hsweb-core/src/main/java/org/hswebframework/web/utils/DigestUtils.java index ac58189f4..6ed4f3c97 100644 --- a/hsweb-core/src/main/java/org/hswebframework/web/utils/DigestUtils.java +++ b/hsweb-core/src/main/java/org/hswebframework/web/utils/DigestUtils.java @@ -1,5 +1,6 @@ package org.hswebframework.web.utils; +import io.netty.util.concurrent.FastThreadLocal; import org.apache.commons.codec.binary.Hex; import java.security.MessageDigest; @@ -8,9 +9,27 @@ import java.util.function.Supplier; public class DigestUtils { - public static final ThreadLocal md5 = ThreadLocal.withInitial(org.apache.commons.codec.digest.DigestUtils::getMd5Digest); - public static final ThreadLocal sha256 = ThreadLocal.withInitial(org.apache.commons.codec.digest.DigestUtils::getSha256Digest); - public static final ThreadLocal sha1 = ThreadLocal.withInitial(org.apache.commons.codec.digest.DigestUtils::getSha1Digest); + public static final FastThreadLocal md5 = new FastThreadLocal() { + @Override + protected MessageDigest initialValue() { + return org.apache.commons.codec.digest.DigestUtils.getMd5Digest(); + } + }; + + public static final FastThreadLocal sha256 = new FastThreadLocal() { + @Override + protected MessageDigest initialValue() { + return org.apache.commons.codec.digest.DigestUtils.getSha256Digest(); + } + }; + ; + public static final FastThreadLocal sha1 = new FastThreadLocal() { + @Override + protected MessageDigest initialValue() { + return org.apache.commons.codec.digest.DigestUtils.getSha1Digest(); + } + }; + ; public static byte[] md5(Consumer digestHandler) { return digest(md5::get, digestHandler);