`
aty
  • 浏览: 36512 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

InheritableThreadLocal的使用

阅读更多

 

JDK提供了InheritableThreadLocal类,用来让子线程继承父线程的值。在创建子线程的时候,子线程会接收此刻父线程线程局部变量的初始值。

package thread.local;

public class Test
{
    // 线程局部变量:初始值默认是null
    private final static InheritableThreadLocal<String> parentholder = new InheritableThreadLocal<String>();

    // 线程局部变量:初始值默认是null
    private final static ThreadLocal<String> selfholder = new ThreadLocal<String>();

    public static void main(String[] args) throws Exception
    {
        parentholder.set("parent initial value");
        selfholder.set("parent initial value");

        Thread a = new Thread()
        {
            public void run()
            {
                // 子线程能够获得父线程的值
                System.out.println("child-thread-begin=" + parentholder.get());

                // 子线程获取的是自己的初值
                System.out.println("self child-thread-begin=" + selfholder.get());

            }
        };

        a.start();

        Thread.sleep(100);
    }
}

 

分享到:
评论

相关推荐

    Android 详解ThreadLocal及InheritableThreadLocal

    总的来说,ThreadLocal和InheritableThreadLocal是处理线程相关数据的有效工具,但使用时需谨慎,避免引发并发问题。在Android开发中,它们常用于存储与线程生命周期相关的数据,如Looper、Handler的MessageQueue等...

    InheritableThreadLocal & ThreadLocal

    4. 在Servlet容器中,谨慎使用InheritableThreadLocal,因为线程池中的线程可能会被复用,可能导致错误的会话信息传递。 总之,理解并熟练运用ThreadLocal和InheritableThreadLocal是Java并发编程中不可或缺的知识...

    Java_为frameworkmiddleware提供了一个增强的InheritableThreadLocal,即使使.zip

    在实际开发中,应谨慎使用`InheritableThreadLocal`,并结合其他设计模式和最佳实践,如使用拦截器、依赖注入等方法来管理上下文信息,以提高代码的可读性和可维护性。 文件`transmittable-thread-local_master.zip...

    ThreadLocal、InheritableThreadLocal详解

    例如,如果父线程设置了 `InheritableThreadLocal` 的值,然后创建并启动一个子线程,子线程可以直接获取到这个值,而使用普通的 `ThreadLocal` 是无法实现这种效果的。 ```java public class ...

    java多线程编程之InheritableThreadLocal

    InheritableThreadLocal 的作用是当我们需要在子线程中使用父线程中的值时,可以像使用 ThreadLocal 一样来使用 InheritableThreadLocal。在 InheritableThreadLocal 的 JDK 源码中,我们可以看到它继承了 ...

    transfertable-thread-local::pushpin:TransmittableThreadLocal(TTL),缺少框架中间件的Java:trade_mark:std lib(简单和0依赖),提供了增强的InheritableThreadLocal,即使使用线程池组件也可以在线程之间传输值

    :pushpin: TransmittableThreadLocal(TTL) :pushpin: ...但对于使用线程池等会池化线程化的执行组件的情况,线程由线程池创建好,并且线程是池化起来反复使用的;这时父子线程关系的ThreadLocal值传

    使用acegi控制用户权限实例

    5. **启动安全上下文**:在Spring的初始化代码中,调用`SecurityContextHolder.setStrategyName(SecurityContextHolder.MODE_INHERITABLETHREADLOCAL);`来激活安全上下文。 6. **测试和调试**:使用模拟用户或真实...

    ThreadLocal垮线程池传递数据解决方案.docx

    使用TransmittableThreadLocal 可以解决多种线程池之间的数据传递问题,如线程池之间的数据共享、线程池之间的任务传递等问题。 在实际应用中,TransmittableThreadLocal 可以应用于各种场景,如在微服务架构中,多...

    Java 20 新功能介绍.pdf

    Scoped Value 解决了在线程之间共享变量的问题,ThreadLocal 和 InheritableThreadLocal 都有其缺陷。ThreadLocal 需要手动清理,且变量不能被子线程继承;InheritableThreadLocal 可以共享信息,但是数据会拷贝多份...

    Spring Security3.1最新配置实例

    2. **配置SecurityContextHolder策略**:设置SecurityContextHolder的策略为`MODE_INHERITABLETHREADLOCAL`,使得当前线程中的安全上下文可以在子线程中继承。 3. **配置Spring Security核心组件**:创建一个名为`...

    高级Java经典面试题2019

    Spring AOP使用动态代理技术,对于实现了接口的类使用JDK动态代理,而对于未实现接口的类则使用Cglib代理。Spring AOP支持通过配置来指定增强逻辑,如前置通知、后置通知等。 #### 控制反转(IoC)设计思想 控制...

    Java后端开发,JUC并发编程Java后端开发,JUC并发编程

    Java提供了volatile关键字、等待/通知机制、join方法、InheritableThreadLocal、MappedByteBuffer等多种线程通信机制。 #### Java并发机制 在Java中,JUC并发包提供了一套丰富的并发工具,例如: - **...

    java_lang包详解.pdf

    同时,一些过时的方法也被标记出来,虽然仍可供老程序使用,但不建议在新代码中使用。 总之,java.lang包是Java编程的基础,它的类和接口构成了Java语言的核心,理解并熟练运用这些元素是成为一名合格的Java开发者...

    Java进阶知识点汇总.pdf

    - **InheritableThreadLocal**:继承自`ThreadLocal`,用于创建可继承的线程局部变量。 ##### java.lang.ref包下的类 - **Reference**:基类,所有引用类型都继承自该类。 - **PhantomReference**(虚引用):仅...

    Spring Cloud体系实现标签路由的方法示例

    `RequestZoneLabelContext`使用`InheritableThreadLocal`来保存线程上下文,这样即使在请求处理过程中产生了新的线程,这些线程也能继承到标签信息。当请求结束时,会清除`RequestZoneLabelContext`中的信息,防止...

    JAVA面试题.docx

    **其他并发工具类与锁原理**:这部分内容涉及ThreadLocal的工作原理、InheritableThreadLocal如何传递线程局部变量、CyclicBarrier和CountDownLatch的区别与用法、Semaphore信号量机制、CopyOnWriteArrayList如何...

Global site tag (gtag.js) - Google Analytics