我应该何时以及如何使用 ThreadLocal 变量?

2024-02-29

我什么时候应该使用ThreadLocal https://docs.oracle.com/javase/8/docs/api/java/lang/ThreadLocal.html多变的?

它是如何使用的?


一种可能(也是常见)的用途是当您有一些非线程安全的对象,但您想避免同步化 https://docs.oracle.com/javase/tutorial/essential/concurrency/sync.html访问该对象(我正在看着你,简单日期格式 https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html)。相反,为每个线程提供其自己的对象实例。

例如:

public class Foo
{
    // SimpleDateFormat is not thread-safe, so give one to each thread
    private static final ThreadLocal<SimpleDateFormat> formatter = new ThreadLocal<SimpleDateFormat>(){
        @Override
        protected SimpleDateFormat initialValue()
        {
            return new SimpleDateFormat("yyyyMMdd HHmm");
        }
    };

    public String formatIt(Date date)
    {
        return formatter.get().format(date);
    }
}

文档 https://docs.oracle.com/javase/8/docs/api/java/lang/ThreadLocal.html.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我应该何时以及如何使用 ThreadLocal 变量? 的相关文章

随机推荐

  • 添加 UIImage 会忽略 UIImageView 框架并调整其大小

    我目前正在尝试将图像添加到一个视图的导航项中 在视图的viewDidLoad 使用以下代码调用函数 类似于这个帖子 https stackoverflow com questions 24803178 swift navigation ba
  • 虚拟主机无法使用 XAMPP 服务器创建

    我在 httpd vhost conf 文件中添加以下代码
  • 最新SDK的SDKROOT路径

    我正在使用 Xcode 构建旧代码并指定SDKROOT Developer SDKs MacOSX HOST VERSION sdk 我想为系统上预安装 的最新 SDK 指定 SDKROOT 例如我在10 8已经并且我想指定SDKROOT与
  • 未加权无向图中的最长路径

    以此图作为参考 假设我想要 0 到 5 之间的最长路径 那将是 0 gt 1 gt 3 gt 2 gt 4 gt 6 gt 5 有什么好的算法吗 我已经搜索过 但没有找到任何我能理解的东西 我发现了很多最短路径的算法 0 gt 1 gt 2
  • Python:Struct.pack(format, [...]),虽然格式几乎相同,但打包数据的大小不同

    import struct data struct pack ici 1 chr 1 1 print len data 12 data struct pack iic 1 1 chr 1 print len data 9 两个 data 变
  • 连接 MongoDB Atlas 与 Mongoose 时出现超时错误

    我正在尝试使用 mongoose 连接到 MongoDB Atlas 上的数据库 但每次它都会给我以下错误 node 2327 UnhandledPromiseRejectionWarning Error queryTxt ETIMEOUT
  • 密码和不同类型的加密

    我知道 我知道 类似的问题已经被问过数百万次了 但由于大多数问题都有不同的风格 所以我有自己的风格 目前我正在开发一个网站 该网站打算在全国范围内推出 因此需要对用户系统进行某种保护 我最近读了很多关于密码加密 散列 加盐 凡是你能想到的内
  • ios:使用 GLEssentials 示例代码显示简单的 3D 模型

    我的目标是显示一个简单的 3D 模型并在其上应用纹理 我已经下载了 GLEssentialsios示例项目 http developer apple com library ios samplecode GLEssentials Intro
  • 删除 SimpleForm 生成的选择字段的空白选项

    我有这段代码 f input category as gt select label gt false collection gt Choices Categories Choices Categories 只是 key gt value
  • 使用 TCP 的模拟器连接

    又嗨了 我正在尝试连接在同一台 PC 上作为服务器和客户端运行的两个模拟器 问题是其中一个位于虚拟机内 每个模拟器应该使用什么地址才能在它们之间进行连接 我正在使用基于 TCP 的连接 第一个模拟器在 Windows 7 上运行 Vmwar
  • 适用于高带宽应用的 WebRTC 数据通道

    我想通过 WebRTC 数据通道发送单向流数据 并且正在寻找最佳配置选项 高带宽 低延迟 抖动 以及其他人在此类应用程序中的预期比特率的经验 我的测试程序发送 2k 的块 使用 2k 的 bufferedAmountLowThreshold
  • 找不到 ID 为“xxx”的 UpdatePanel。如果它是动态更新的,那么它必须位于另一个 UpdatePanel 内

    我有一个带有 Ajax 选项卡控件的页面 其中一个选项卡中有一个 Web 控件 它是 Telerik RadGrid 其中编辑表单指向另一个 Web 控件 该编辑表单还包含 Ajax 选项卡 并且在其中一个选项卡上 还有另一个 Web 控件
  • Matlab 中的曲面图

    我正在尝试用对角矩阵绘制曲面 我正在尝试绘制的方程是 f x TDx x 是 2 x 1 向量 D 是 2 x 2 矩阵 这是到目前为止的内容 但我不断收到错误 x linspace 10 10 y linspace 10 10 X Y m
  • 如何将推文居中?

    Twitter 提供了嵌入推文的代码 例如我有 blockquote class twitter tweet p NoSQL space gradually becoming SlowSQL space p mdash Big Data B
  • 为什么我的 TreeSet 不添加第一个元素之外的任何内容?

    我有几个形式的数组 private static String patientNames John Lennon Paul McCartney George Harrison Ringo Starr 然后我制作一个像这样的 TreeSet
  • R knit:可以以编程方式修改块标签吗?

    我正在尝试使用 knit 生成一份报告 该报告对数据集的不同子集执行相同的分析集 该项目包含两个 Rmd 文件 第一个文件是设置工作区和文档的主文档 第二个文件仅包含执行分析并生成相关图形的块 我想做的是编织主文件 然后为每个数据子集调用第
  • Cin 对象返回值 C++ [重复]

    这个问题在这里已经有答案了 我想问一下cin的返回值是多少 我知道它是 ifstream 对象 并且当它在表达式中使用时 如if cin 实际上有一个函数被调用 我想知道它实际上是什么函数 cin fail 或 cin good 或 是if
  • SQL Server 2000 中的交叉表查询

    我希望以前有人尝试过这一点 并且在我进一步之前可以得到一些建议 我希望在 sql server 2000 中生成类似于交叉表查询的内容 我有一个类似于以下的表结构 Item Item Parameter Parameter id item
  • 在我的 iOS 应用程序中实施新的 Google 地图 SDK

    更新 我刚刚收到一封来自 Google 的有关新 Google 地图 iOS SDK 的电子邮件 看来一切都已经解决了 我已成功为我的应用程序创建新的 API 密钥 还没有测试过 但看起来是正确的 他们派我来this https devel
  • 我应该何时以及如何使用 ThreadLocal 变量?

    我什么时候应该使用ThreadLocal https docs oracle com javase 8 docs api java lang ThreadLocal html多变的 它是如何使用的 一种可能 也是常见 的用途是当您有一些非线