在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 成员?
最佳答案
线程首次调用 ThreadLocal
的 get
方法时,将调用您定义的 initialValue()
方法,从而创建一个新的 B
实例。
关于java - ThreadLocal成员什么时候初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26441649/