gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 11:28:49 28 4
gpt4 key购买 nike

我在这里阅读 Threadlocal 的 JavaDoc

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

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

但我的问题是,为什么他们选择将其设为静态(通常) - 具有“每个线程”状态但字段是静态的会让事情变得有点困惑?

最佳答案

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

通常它包含一些对象,例如用户对话、Web 请求等范围内的对象。您不希望它们也从属于类的实例。
一个 Web 请求 => 一个持久性 session 。
不是一个 Web 请求 => 每个对象一个持久 session 。

关于java - 为什么 Java ThreadLocal 变量应该是静态的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2784009/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com