美文网首页
1.1.6 线程封闭之ThreadLocal和栈封闭

1.1.6 线程封闭之ThreadLocal和栈封闭

作者: 叶凯飞 | 来源:发表于2020-02-12 22:17 被阅读0次

线程封闭概念

多线程访问共享可变数据时,涉及到线程间数据同步的问题。并不是所有时候,都要用到共享数据,所以线程封闭概念就提出来了。

数据都被封闭在各自的线程之中,就不需要同步,这种通过将数据封闭在线程中而避免使用同步的技术称为线程封闭。

线程封闭具体的体现有:ThreadLocal、局部变量。

ThreadLocal

ThreadLocal是Java里一种特殊的变量。

它是一个线程级别变量,每个线程都有一个ThreadLocal就是每个线程都拥有了自己独立的一个变量,竞争条件就被彻底消除了,在并发模式下是绝对安全的变量。

用法:ThreadLocal<T> var = new ThreadLocal<T>();

会自动在每一个线程上创建一个T的副本,副本之间彼此独立,互补影响。

可以用ThreadLocal存储一些参数,以便在线程中多个方法中使用,用来代替方法传参的做法。

实在难以理解的,可以理解为,JVM维护了一个Map<Thread,T>,每个线程都要用这个T的时候,用当前的线程去Map里面取。仅作为一个概念理解。

栈封闭

局部变量的固有数据之一就是封闭在线程中。

它们位于执行线程的栈中,其他线程无法访问这个栈。

相关文章

  • 1.1.6 线程封闭之ThreadLocal和栈封闭

    线程封闭 一个类里面,普通的变量命名的话,那就代表这个这个变量是所有线程共享的那么如果这个类,有一个Thread,...

  • 1.1.6 线程封闭之ThreadLocal和栈封闭

    线程封闭概念 多线程访问共享可变数据时,涉及到线程间数据同步的问题。并不是所有时候,都要用到共享数据,所以线程封闭...

  • 线程封闭——ThreadLocal

    线程封闭概念 多线程访问共享数据为了安全性通常需要同步,如果仅在单线程内访问数据就不需要同步,这种避免共享数据的技...

  • Java线程封闭

    线程封闭 多线程中不需要使用共享数据,使用数据封闭避免使用同步的技术 线程封闭的具体实现:ThreadLocal、...

  • 线程封闭与ThreadLocal

    线程封闭与ThreadLocal 多线程访问共享可变数据时,涉及到线程间数据同步问题。然而,并不是所有时候都需要共...

  • 线程封闭之ThreadLocal源码详解

    简书江溢Jonny,转载请注明原创出处,谢谢! 本文内容将基于JDK1.7的源码进行讨论,并且在文章的结尾,笔者将...

  • JAVA线程之ThreadLocal与栈封闭(六)

    上次说了Java通信的几种方式,suspend / resume,wait/notify,park/unpark,...

  • ThreadLocal全面分析

    1.ThreadLocal的作用 ThreadLocal是维持 线程封闭性 的一种规范的方式,这个类能使线程中的 ...

  • 如何做到类的线程安全

    类的线程安全定义。怎么才能做到类的线程安全 1.栈封闭 (所有的变量都是在方法内部声明的,这些变量都是处于栈封闭状...

  • ThreadLocal探究

    什么是ThreadLocal ThreadLoacl提供了可以线程封闭的变量存储,提供线程内的局部变量,可以保证在...

网友评论

      本文标题:1.1.6 线程封闭之ThreadLocal和栈封闭

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