ThreadLocal快速明白
来源:互联网 发布:婚礼 简单 知乎 编辑:程序博客网 时间:2024/06/03 15:15
ThreadLocal介绍
这个介绍内容很重要,标志着你是否能够知道ThreadLocal出生的目的。
大家都知道,如果多个线程共享一份资源时,多个线程都有权限修改资源的条件下,极容易出现线程安全问题。但是如果这个资源不一定非得让多个线程共享时,即每个线程都能拥有一份属于自己资源的时候,为了方便的给每一个线程分配资源,即每个线程都有一份自己的资源,TreadLocal就提供了便利!!
ThreadLocal API
ThreadLocal类只有三个方法:
- void set(T value):保存值;
- T get():获取值;
- void remove():移除值。
只有这三个方法。
ThreadLocal的内部是Map
ThreadLocal内部其实是个Map来保存数据。虽然在使用ThreadLocal时只给出了值,没有给出键,其实它内部使用了当前线程做为键。
class MyThreadLocal<T> { private Map<Thread,T> map = new HashMap<Thread,T>(); public void set(T value) { map.put(Thread.currentThread(), value); } public void remove() { map.remove(Thread.currentThread()); } public T get() { return map.get(Thread.currentThread()); }}
使用
比如,现在创建了一个ThreadLocal实例,ThreadLocal泛型为String类型,那么当三个线程同时用该TreadLocal实例去保存值的时候,将会出现下面这张表的结果:
扩展
对于多线程共享同一个资源时(每个线程都拥有修改和获取的功能),大家都喜欢给方法或者数据加锁以此来解决数据同步问题,但是你可知道加锁可是会让代码慢了将近150多倍的样子,当然你是感受不到的,就像你感受不到毫秒和纳秒的区别,但是如果项目够大,你就会清楚感受到!!!
阅读全文
1 0
- ThreadLocal快速明白
- 弄明白ThreadLocal类
- 快速掌握ThreadLocal
- 明白
- 明白
- 明白
- 明白
- ThreadLocal
- ThreadLocal
- ThreadLocal
- ThreadLocal
- ThreadLocal
- ThreadLocal
- ThreadLocal
- ThreadLocal
- ThreadLocal
- ThreadLocal
- ThreadLocal
- 560. Subarray Sum Equals K 题解
- 【php】提高网页加载速度
- 基于Beaglebone black的FreeBSD开启无线网卡
- TCP相关基础知识
- Minimum Factorization
- ThreadLocal快速明白
- php和sqlserver
- 两个Activity跳转的时候,执行的生命周期方法
- 深度学习(六十七)metal forge深度学习库使用
- 基于Madplay的MP3音乐播放器
- Android中自定义View仿京东秒杀倒计时
- stm32f407 学习过程中时钟问题(整理记录)
- ntp 网络攻击与解决方法(3种)
- svn迁移到git