线程-ThreadLocal-线程局部变量
2017-03-18 12:18
225 查看
ThreadLocal的概念:
它与volatile完全相反,它是为了不可见性。
它会给每一个访问它的线程创建独立副本,让线程之间不产生冲突,从而保证线程安全。
ThreadLocal与synchronized不同,ThreadLocal完全不提供所锁,它是以空间换时间的为出发点而synchronized是以时间换空间为出发点,
一个速度快但占用空间大,一个是节省空间但处理速度慢。
当并发不高时建议使用加锁的方式,并发高时用ThreadLocal.
编写格式:
public static ThreadLocal<String> tl = new ThreadLocal<String>();
实现原理:
每个线程操作ThreadLocal.set()方法时,都是将当前的线程和设置的值存入一个map中,当操作get()方法时根据当前线程为key找到对应的值,
通过这种方法保证数据不冲突。
它与volatile完全相反,它是为了不可见性。
它会给每一个访问它的线程创建独立副本,让线程之间不产生冲突,从而保证线程安全。
ThreadLocal与synchronized不同,ThreadLocal完全不提供所锁,它是以空间换时间的为出发点而synchronized是以时间换空间为出发点,
一个速度快但占用空间大,一个是节省空间但处理速度慢。
当并发不高时建议使用加锁的方式,并发高时用ThreadLocal.
编写格式:
public static ThreadLocal<String> tl = new ThreadLocal<String>();
实现原理:
每个线程操作ThreadLocal.set()方法时,都是将当前的线程和设置的值存入一个map中,当操作get()方法时根据当前线程为key找到对应的值,
通过这种方法保证数据不冲突。
相关文章推荐
- ThreadLocal---线程本地变量
- 二、线程相关类ThreadLocal
- ThreadLocal实现线程单实例
- 【Java8源码分析】线程-ThreadLocal的全面剖析
- 线程的私家领地:ThreadLocal
- 从Android Handle看 线程与对象、ThreadLocal
- 线程不安全的类不要轻易做为static变量使用,及如何使用ThreadLocal将共享变量变为独享变量
- ThreadLocal实现线程范围内共享变量和对象
- 深入理解线程本地变量ThreadLocal
- 线程本地ThreadLocal的介绍与使用
- 线程隔离ThreadLocal
- Spring基于ThreadLocal的“资源-事务”线程绑定设计
- 2.java线程之ThreadLocal
- ThreadLocal线程范围内的共享变量
- Java多线程编程之ThreadLocal线程范围内的共享变量
- ThreadLocal实现线程范围内模块之间共享数据及线程间数据独立
- Python 多线程,ThreadLocal和线程锁
- ThreadLocal-------线程范围内的数据共享
- 线程(ThreadLocal)
- 进程和线程(3)-ThreadLocal