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