美文网首页
对ThreadLocal的一些理解

对ThreadLocal的一些理解

作者: 溪水散人 | 来源:发表于2020-08-13 00:21 被阅读0次

    ThreadLocal,这个东西真的是熟悉又陌生,原因是面试的时候好像经常会被问到,但是实际使用的时候却用的比较少。

    对于其源码,很多博客到处都是,就不在贴在这里,免去抄来抄去的嫌疑。

    在并发编程的环境下,如果存在共享数据,为了保证这些数据的一致性,我们需要通过各种操作来保证共享数据的一致性,如通过加锁的方式,无论是那种方式都好,其目的都是为了对共享数据操作的原子性。

    而ThreadLocal取反其道行之,对于一个共享变量,每个使用它的线程,都为其分配一个副本,即保证了每个线程用到的这个共享变量都是不一样的,即t1线程不会用到t2线程修改后的共享变量的值。

    还是贴一点源码

        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();
        }
    

    相关文章

      网友评论

          本文标题:对ThreadLocal的一些理解

          本文链接:https://www.haomeiwen.com/subject/wmmvdktx.html