【发布时间】:2011-02-16 17:37:54
【问题描述】:
假设
class A{
private static final ThreadLocal<String> tl = new ThreadLocal<String>();
}
如果 A 只加载在 vm 上的一个类加载器中,则 t1 的值是显而易见的。但是如果 A 在两个不同的类加载器中并排加载,t1 会发生什么?是否会为给定线程共享该值?
【问题讨论】:
-
每个类加载器都有它自己的类实例,因此有 2 个 t1 实例。所以2个不同。您可以通过从线程本地删除静态部分来进行实验,即每个对象可以在每个线程中看到不同的值。您可以查看类只是确保每个类加载器是单例的对象。
标签: java classloader thread-local