可继承的线程本地和线程池
我有一个问题,我真的不认为有解决方案,但我无论如何都会在这里尝试。我的应用程序使用线程池,并且此池中的某些线程具有可继承的线程局部变量。我已经扩展了 ThreadPoolExecutor 类,以便在线程完成执行时基本上清除线程局部变量(在 afterExecute 回调方法中)。
我知道,当你有一个 InheritableThreadLocal 变量时,当线程初始化以从父线程获取 ThreadLocal 变量的值时,将调用 childValue() 方法。但是,在我的情况下,下次使用线程时(使用一次后),InheritableThreadLocal变量的值为null(因为它之前在afterExecute中被清除)。有没有办法在execute之前访问父线程的线程局部变量,以便我基本上可以模拟 InheritableThreadLocal 中的子值方法在创建线程时执行的操作。