【问题标题】:Performance impact on ThreadLocal operations对 ThreadLocal 操作的性能影响
【发布时间】:2021-11-02 18:07:52
【问题描述】:

我已经有一个 ThreadLocal 对象定义为一个类 Context

class Context {
.....
some existing fields
.....
}
ThreadLocal<Context> = .....

如果我必须在上面的 Context 类中添加一个新的布尔字段,那么ThreadLocalget() 和 set() 操作的性能影响是什么?

【问题讨论】:

  • 这能回答你的问题吗? Performance of ThreadLocal variable
  • 没有?请记住,它是对存储的实际对象的引用
  • 无。对象的大小或内容与存储对它的引用的性能无关。
  • 请提供足够的代码,以便其他人更好地理解或重现问题。

标签: java performance thread-local


【解决方案1】:

ThreadLocal 类的get 方法看起来像

    public T get() {
        Thread t = Thread.currentThread();
        ThreadLocalMap map = getMap(t);
        if (map != null) {
            ThreadLocalMap.Entry e = map.getEntry(this);
        ...

所以每当我们从 ThreadLocal 获取对象时,它都会从其内部存储的映射中获取元素。

由于get/set方法只需要读/写map中的对象,所以在对象的类中添加/删除字段不会影响性能。

【讨论】:

    猜你喜欢
    • 2010-10-07
    • 2018-11-06
    • 2013-08-30
    • 2021-03-09
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-24
    相关资源
    最近更新 更多