当我们使用它时,什么是本地线程?

时间:2012-05-16 17:47:49

标签: java thread-safety

  

可能重复:
  When and how should I use a ThreadLocal variable?

我对线程本地的了解是。

1)Thread Local必须声明为 public static final

2)Thread Local是当前线程的本地变量。

3 个答案:

答案 0 :(得分:2)

它不需要公开

但它本质上是一个Map,你只能获取当前Thread作为键,当值尚未设置时它会自动初始化

这实现了线程本地存储,因此您可以拥有“公共静态”变量而无需对它们进行同步

答案 1 :(得分:1)

在你的陈述中找不到问题,但让我试试:

  

1)Thread Local必须声明为public static final。

事实并非如此,事实上ThreadLocal可以是私有的,不一定是static而且可以是非最终的。不知道你在哪里见过这样的要求。

  

2)Thread Local是当前线程的本地变量。

正确。您可以想象ThreadLocal是一个映射,其中key是一个线程,value是实际变量。但它以更好的方式实施。

答案 2 :(得分:0)

Threadlocal为每个线程创建您指定类型的单独实例(它是通用的)。您只需使用它的get()方法即可访问它。此方法将始终返回当前线程的值。