线程封闭之ThreadLocal和栈封闭
【信息】
线程封闭概念
数据都被封闭在各自的线程中,就不需要同步,这种通过将数据封闭在线程中而避免使用同步的技术称为线程封闭。
具体体现有:
- ThreadLocal
- 局部变量
ThreadLocal
是Java里一种特殊的变量
它是一个线程级别的变量,每个线程都有一个ThreadLocal就是每个线程都拥有了自己独立的一个变量,竞争条件被彻底消除了,在并发模式下是绝对安全的变量。
==用法:== ThreadLocal
会自动在每个线程上创建一个T的副本,副本之间彼此独立,互不影响。
可以用ThreadLocal存储一些参数,以便在线程中多个方法中使用,用来代替方法传参的做法。
可以理解为,JVM维护了一个Map<Thread, T>,每个线程要用这个T的时候,用当前线程去Map里面取。仅作为一个概念理解
栈封闭
局部变量的固有属性之一就是封闭在线程中。它们位于执行线程的栈中,其他线程无法访问这个栈。
【思考】
线程封闭还有其他方式吗?有哪些场景用?
【行动/反馈】
查下问题:我眼中的线程封闭
线程封闭有哪些实现方式?
1 |
1.使用单线程。曲折的可以这么说。 |
线程封闭的应用场景
1 |
1.swing的可视化组件和数据模型对象都不是线程安全的,swing通过将他们封闭到Swing的事件分发线程中来实现线程安全。 |
【钩子】
线程封闭 ThreadLocal
【出处】
Java高级开发工程师-线程封闭之ThreadLocal和栈封闭
【时间】
2018-12-27
若涉及版权问题,请及时联系作者删除。
更多精彩文章请关注
近期评论