`

ThreadLocal InheritableThreadLocal

    博客分类:
  • java
 
阅读更多

package snippet;

 

public class Snippet {

public void testThreadLocal() {

final ThreadLocal<String> local = new ThreadLocal<String>();

work(local);

}

 

public void testInheritableThreadLocal() {

final ThreadLocal<String> local = new InheritableThreadLocal<String>();

work(local);

}

 

public static void main(String[] args) {

//new Snippet().testThreadLocal();

new Snippet().testInheritableThreadLocal();

}

private void work(final ThreadLocal<String> local) {

local.set("a");

System.out.println(Thread.currentThread() + "," + local.get());

Thread t = new Thread(new Runnable() {

 

@Override

public void run() {

System.out.println(Thread.currentThread() + "," + local.get());

local.set("b");

System.out.println(Thread.currentThread() + "," + local.get());

}

});

 

t.start();

try {

t.join();

} catch (InterruptedException e) {

e.printStackTrace();

}

 

System.out.println(Thread.currentThread() + "," + local.get());

}

}

 

分享到:
评论

相关推荐

    Android 详解ThreadLocal及InheritableThreadLocal

    ThreadLocal和InheritableThreadLocal是Java中两个非常重要的线程相关的类,它们在Android开发中也有广泛应用。本文将深入解析这两个概念以及它们在Android环境下的工作原理。 **ThreadLocal** 是一个线程局部变量...

    ThreadLocal、InheritableThreadLocal详解

    ThreadLocal和InheritableThreadLocal是Java中处理线程局部变量的两个类,它们主要用于解决多线程环境下的数据隔离问题。线程安全是并发编程中的核心问题之一,而ThreadLocal提供了一种机制,使得每个线程都有自己的...

    InheritableThreadLocal & ThreadLocal

    《InheritableThreadLocal & ThreadLocal 深度解析》 在Java编程中,线程局部变量(ThreadLocal)和可继承线程局部变量(InheritableThreadLocal)是两种非常重要的工具,它们允许我们在多线程环境中创建独立于线程...

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

    3 TransmittableThreadLocal 的实现原理:TransmittableThreadLocal 是基于ThreadLocal 和InheritableThreadLocal 的结合,能够实现跨线程池之间的数据传递。 4 TransmittableThreadLocal 的应用场景:...

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

    而`InheritableThreadLocal`则在`ThreadLocal`的基础上增加了一项功能:当新线程被创建(例如通过`Thread.start()`或`ExecutorService.submit()`)时,这些新线程会自动继承其父线程中`InheritableThreadLocal`变量...

    java多线程编程之InheritableThreadLocal

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

    Java 20 新功能介绍.pdf

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

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

    :backhand_index_pointing_right:在使用线程池等会池化复用线程的执行组件情况下,提供ThreadLocal值的传递功能,解决异步执行时上下文传递的问题。一个Java标准库本应为框架/中间件设施开发提供的标配能力,本库...

    Java核心API需要掌握的程度

    17. **Thread/ThreadGroup/ThreadLocal/InheritableThreadLocal**:线程相关的类,提供了多线程编程的支持。 18. **Throwable/Error/AssertionError/LinkageError/ClassCircularityError/ClassFormatError/...

    java1.8源码-jdk1.8.0_111:JDK1.8源码注释

    InheritableThreadLocal跟ThreadLocal差不多,关键点在Thread#init方法中会对Thread中的实例变量inheritableThreadLocals进行赋值操作,将父线程的本地变量复制到子线程中 首先通过ServiceLoader.load方法生成一个...

    高级Java经典面试题2019

    它的实现基于`Thread`类中的`copyStateFrom`方法,将父线程的`ThreadLocal`值复制到子线程。 #### CyclicBarrier与CountDownLatch的不同 - **CyclicBarrier**:类似于计数器,但可以在到达特定数量的参与者后重新...

    java_lang包详解.pdf

    `Thread`, `Compiler`, `Process`, `ThreadGroup`, `Double`, `Runtime`, `ThreadLocal`, `Float`, `RuntimePermission`, `Throwable`, `InheritableThreadLocal`, `SecurityManager`, 和 `Void`。这些类不仅提供了...

    java.lang包介绍

    在Java 2(J2SE)中,`java.lang`包添加了一些新的类和方法,如`InheritableThreadLocal`,`ThreadLocal`的扩展,使得子线程可以继承父线程的变量,以及`SecurityManager`,用于实现安全管理策略。 过时方法在Java ...

    java-lang包详解

    - **InheritableThreadLocal**: 与ThreadLocal类似,但子线程可以继承父线程的值。 - **Compiler**: 提供编译运行时的类。 - **Process**: 表示操作系统进程,提供了与进程相关的操作。 - **RuntimePermission**...

    java-java-lang包.pdf

    例如在Java 2中,就增加了一些新的类如InheritableThreadLocal和Character.Subset等。这些改进让java.lang包更加丰富和强大,为Java编程提供了更广泛的支撑。在开发过程中,了解和熟悉java.lang包提供的类和接口能够...

Global site tag (gtag.js) - Google Analytics