为什么Java ThreadLocal变量应该是静态的

我在这里阅读Threadlocal的JavaDoc

https://docs.oracle.com/javase/1.5.0/docs/api/java/lang/ThreadLocal.html

它说:“ ThreadLocal实例通常是希望将状态与线程关联的类中的私有静态字段(例如,用户ID或事务ID)。”

但是我的问题是,为什么他们选择使其静态化(通常)-使其具有“每个线程”状态,但字段是静态的则有些令人困惑?

回答:

因为如果它是一个实例级字段,那么它实际上是“每个线程-每个实例”,而不仅仅是保证的“每个线程”。通常这不是您要查找的语义。

通常,它所保存的对象之类的对象仅限于用户对话,Web请求等。您不希望它们也被细分为类的实例。

一个Web请求=>一个Persistence会话。

没有一个Web请求=>每个对象一个持久性会话。

以上是 为什么Java ThreadLocal变量应该是静态的 的全部内容, 来源链接: utcz.com/qa/401077.html

回到顶部