• 技术文章 >java >java教程

    java ThreadLocal的对象存储和获取

    小妮浅浅小妮浅浅2021-02-20 16:44:21原创5790

    对象的保存问题,一直是我们在做程序研究时所关心的。在ThreadLocal中也有着同样的操作,我们可以将对象进行存储和获取。这需要对ThreadLocal的知识有一定的了解,而且用到了其中的set方法。下面我们就ThreadLocal的存储和获取进行完整的操作步骤讲解,具体内容分享给大家。

    1、ThreadLocal的set方法

    1

    2

    3

    4

    5

    6

    7

    8

    public void set(T value) {

        Thread t = Thread.currentThread();

        ThreadLocalMap map = getMap(t);

        if (map != null)

            map.set(this, value);

        else

            createMap(t, value);

    }

    通过ThreadLocal的set方法看出,ThreadLocalMap的<k,v>结构中,key存储的是ThreadLocal本身,而value则是实际存储的值,也就是说,在ThreadLocalMap里存储了当前ThreadLocal所复制的变量副本。

    2、ThreadLocal本身不存储值,在使用中,ThreadLocal是作为一个key,从ThreadLocalMap获取值,从ThreadLocal的get方法中也可以看出来:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

        public T get() {

            Thread t = Thread.currentThread();

            ThreadLocalMap map = getMap(t);

            if (map != null) {

                ThreadLocalMap.Entry e = map.getEntry(this);

                if (e != null) {

                    @SuppressWarnings("unchecked")

                    T result = (T)e.value;

                    return result;

                }

            }

            return setInitialValue();

    }

    以上就是java ThreadLocal的对象存储和获取,关键在于掌握其中set的使用。大家如果对于这种方法还不够熟练,一定要在课后多加练习。更多Java学习指路:java教程

    专题推荐:java threadlocal
    上一篇:java中内存模型是什么?有什么用? 下一篇:Java之jvm的执行程序过程

    相关文章推荐

    • java threadLocal源码探究• java中ThreadLocal核心方法有哪些?• java中ThreadLocal的应用场景分析

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网