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());
}
}
相关推荐
ThreadLocal和InheritableThreadLocal是Java中两个非常重要的线程相关的类,它们在Android开发中也有广泛应用。本文将深入解析这两个概念以及它们在Android环境下的工作原理。 **ThreadLocal** 是一个线程局部变量...
ThreadLocal和InheritableThreadLocal是Java中处理线程局部变量的两个类,它们主要用于解决多线程环境下的数据隔离问题。线程安全是并发编程中的核心问题之一,而ThreadLocal提供了一种机制,使得每个线程都有自己的...
《InheritableThreadLocal & ThreadLocal 深度解析》 在Java编程中,线程局部变量(ThreadLocal)和可继承线程局部变量(InheritableThreadLocal)是两种非常重要的工具,它们允许我们在多线程环境中创建独立于线程...
3 TransmittableThreadLocal 的实现原理:TransmittableThreadLocal 是基于ThreadLocal 和InheritableThreadLocal 的结合,能够实现跨线程池之间的数据传递。 4 TransmittableThreadLocal 的应用场景:...
而`InheritableThreadLocal`则在`ThreadLocal`的基础上增加了一项功能:当新线程被创建(例如通过`Thread.start()`或`ExecutorService.submit()`)时,这些新线程会自动继承其父线程中`InheritableThreadLocal`变量...
InheritableThreadLocal 的作用是当我们需要在子线程中使用父线程中的值时,可以像使用 ThreadLocal 一样来使用 InheritableThreadLocal。在 InheritableThreadLocal 的 JDK 源码中,我们可以看到它继承了 ...
Scoped Value 解决了在线程之间共享变量的问题,ThreadLocal 和 InheritableThreadLocal 都有其缺陷。ThreadLocal 需要手动清理,且变量不能被子线程继承;InheritableThreadLocal 可以共享信息,但是数据会拷贝多份...
:backhand_index_pointing_right:在使用线程池等会池化复用线程的执行组件情况下,提供ThreadLocal值的传递功能,解决异步执行时上下文传递的问题。一个Java标准库本应为框架/中间件设施开发提供的标配能力,本库...
17. **Thread/ThreadGroup/ThreadLocal/InheritableThreadLocal**:线程相关的类,提供了多线程编程的支持。 18. **Throwable/Error/AssertionError/LinkageError/ClassCircularityError/ClassFormatError/...
InheritableThreadLocal跟ThreadLocal差不多,关键点在Thread#init方法中会对Thread中的实例变量inheritableThreadLocals进行赋值操作,将父线程的本地变量复制到子线程中 首先通过ServiceLoader.load方法生成一个...
它的实现基于`Thread`类中的`copyStateFrom`方法,将父线程的`ThreadLocal`值复制到子线程。 #### CyclicBarrier与CountDownLatch的不同 - **CyclicBarrier**:类似于计数器,但可以在到达特定数量的参与者后重新...
`Thread`, `Compiler`, `Process`, `ThreadGroup`, `Double`, `Runtime`, `ThreadLocal`, `Float`, `RuntimePermission`, `Throwable`, `InheritableThreadLocal`, `SecurityManager`, 和 `Void`。这些类不仅提供了...
在Java 2(J2SE)中,`java.lang`包添加了一些新的类和方法,如`InheritableThreadLocal`,`ThreadLocal`的扩展,使得子线程可以继承父线程的变量,以及`SecurityManager`,用于实现安全管理策略。 过时方法在Java ...
- **InheritableThreadLocal**: 与ThreadLocal类似,但子线程可以继承父线程的值。 - **Compiler**: 提供编译运行时的类。 - **Process**: 表示操作系统进程,提供了与进程相关的操作。 - **RuntimePermission**...
例如在Java 2中,就增加了一些新的类如InheritableThreadLocal和Character.Subset等。这些改进让java.lang包更加丰富和强大,为Java编程提供了更广泛的支撑。在开发过程中,了解和熟悉java.lang包提供的类和接口能够...