ThreadLocal.get/put 有什么区别

class ThreadT extends Thread {
private SomeObj obj;
.....
}

我相信,如果我错了,请纠正我,这个 obj 也会因每个线程而不同。即,如果我们有 5 个 ThreadT 对象,我们将让它们中的每五个都有不同的 obj 对象。

那么如果是这种情况,那为什么我们需要使用 ThreadLocal 呢?

如果我对两者中的任何一个的理解不正确,请纠正我。

最佳答案

从文档
This class provides thread-local variables. These variables differ from their normal counterparts in that each thread that accesses one (via its get or set method) has its own, independently initialized copy of the variable.
如果您正在编写直接扩展线程的类,您的方法将有效。但是那些需要 ThreadLocal 变量但不能直接访问它的 Thread 实例的类呢?

在这种情况下 ThreadLocal 很有用。特别是在大多数时间不直接使用线程的服务器环境中。

关于java - ThreadLocal 与线程局部变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16411242/

10-11 16:11