java - ThreadLocal成员什么时候初始化?

标签 java multithreading

在java中,我有一个类似的类结构

class A{
    ThreadLocal<B> myB;
    public A(){
      myB = new ThreadLocal<B>(){
         protected B initialValue(){
            return new B();
         }
      };
    }

    static class B{
    }

    public static void main(String[] args){
        A a = new A();
        for(int i=0;i<2;i++)
          new Thread(a).start();
    }
}

据我了解 ThreadLocal 的概念,每个线程都会有自己的 myB 的 threadLocal 对象。

假设 A 正在被多个线程使用(如 main() 中所示)。

假设我只实例化 A 一次,什么时候为每个线程创建 myB 成员?

最佳答案

线程首次调用 ThreadLocalget 方法时,将调用您定义的 initialValue() 方法,从而创建一个新的 B 实例。

关于java - ThreadLocal成员什么时候初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26441649/

相关文章:

c# - 在另一个线程中使用线程时发生内存泄漏

java - 如何知道Java中InterruptedException的原因

java bytebuffer slice 不按照文档工作

java - 在方法中使用扫描仪类

java - Java 中的基元与对象

java - while 循环内的延迟不起作用

java - 这个线程连接代码是什么意思?

Java Log4j2 Syslog Appender

安装 Websphere Application Server 时未找到 Java

java - Java volatile read flush writes,和volatile write update reads