From 62c36b1749804cf7deac82cc5455d4e8f49c078a Mon Sep 17 00:00:00 2001 From: sun Date: Wed, 20 Sep 2023 17:46:55 +0800 Subject: [PATCH] feat[thread local]: FastThreadLocalAdapter --- .../protocol/util/FastThreadLocalAdapter.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 protocol/src/main/java/com/zfoo/protocol/util/FastThreadLocalAdapter.java diff --git a/protocol/src/main/java/com/zfoo/protocol/util/FastThreadLocalAdapter.java b/protocol/src/main/java/com/zfoo/protocol/util/FastThreadLocalAdapter.java new file mode 100644 index 00000000..15dec1d4 --- /dev/null +++ b/protocol/src/main/java/com/zfoo/protocol/util/FastThreadLocalAdapter.java @@ -0,0 +1,29 @@ +package com.zfoo.protocol.util; + +import io.netty.util.concurrent.FastThreadLocal; + +import java.util.function.Supplier; + +/** + * @author godotg + */ +public class FastThreadLocalAdapter { + + private FastThreadLocal fastThreadLocal; + + private Supplier supplier; + + public FastThreadLocalAdapter(Supplier supplier) { + this.supplier = supplier; + this.fastThreadLocal = new FastThreadLocal<>() { + @Override + protected T initialValue() { + return supplier.get(); + } + }; + } + + public T get() { + return Thread.currentThread().isVirtual() ? supplier.get() : fastThreadLocal.get(); + } +}