Yang Fang
Yang Fang
可以考虑把 Ttl 存储接口分离出来,根据运行时环境检测选择具体的实现,有 FastThreadLocal 的环境使用 FastThreadLocal 实现,后续甚至可以考虑让用户自己实现自己的存储方案,通过 spi 的方式加载进来
在支持 FastThreadLocal 的环境下,每个 Ttl 创建一个 FastThreadLocal (**这个就是我说的想抽出来做成一个存储接口**),现在每个 Ttl 的存储其实是 InheritableThreadLocal 实现,所以每次都是使用 `super.get` 和 `super.set` 来完成值的读取和设置,分别比较一下: ## 前提 假定每个 Ttl 有一个 FastThreadLocal : ```java private FastThreadLocal fastThreadLocal = new FastThreadLocal(); ```...
> 简单地在TransmittableThreadLocal中引入 FastThreadLocal 不知道是否可以 实现的时候并不会这么简单,需要对环境检测一下,只是在运行时有 FastThreadLocal 支持的情况下才会创建。我上面写法只是为了表达更清晰一点 @xwshiustc
@jdsmit60 I'm trying it on arch linux with kernel `4.8.13-1-ARCH`. My wireless adapter is netgear A6210 just like you. The `wlan0` showed up by with no mac address. Have you...
看到 `project reactor` 已经集成了一个 `ThreadLocal` 的传递机制 [`enableAutomaticContextPropagation()`](https://github.com/reactor/reactor-core/blob/96cde5be59fbd64b867a1006cc29d2104c7e48bf/reactor-core/src/main/java/reactor/core/publisher/Hooks.java#L537-L548): ```java public static void enableAutomaticContextPropagation() { if (ContextPropagation.isContextPropagationOnClasspath) { Hooks.addQueueWrapper( CONTEXT_IN_THREAD_LOCALS_KEY, ContextPropagation.ContextQueue::new ); Schedulers.onScheduleHook( CONTEXT_IN_THREAD_LOCALS_KEY, ContextPropagation.scopePassingOnScheduleHook() ); ContextPropagation.propagateContextToThreadLocals = true; } } ```...