当前位置: 首页 > 后端技术 > Java

InheritableThreadLocal

时间:2023-04-01 20:08:49 Java

采用默认新建子线程,inheritThreadLocals=true;如果此时父线程inheritableThreadLocals不为空,则将父线程inheritableThreadLocals传给子线程。从ThreadLocalMap可以看出,子线程将parentMap中的所有记录都一一复制到自己的线程中。但是线程池不起作用,因为线程TransmittableThreadLocal会被重用。线程池异步前,将当前父线程中的局部变量取出,然后赋值给Rannable包装类中的captureRef属性。接下来大概率会在run方法中,将这些捕获到的值赋值给子线程的holder,从而赋值对应的TTL值。已达到线程池中的上下文传输。TransmittableThreadLocal继承自inheritThreadLocals。所以默认新建线程也可以通过