1.ThreadLocal作用
在一个线程中,线程安全的共享数据(实现在同一个线程中共享数据,从而解决多线程数据安全的问题)
分析:1.数据:可以是普通变量,对象,数组等。(在一个线程中)一个数据对应一个ThreadLocal对象,线程销毁,对象释放。
2.安全:如何理解-之后进行源码分析
2.ThreadLocal原理分析
2.1ThreadLocal方法(set,get)
先创建threadlocal对象
调用set方法:
threadLocal1.set(xxx);
xxx就是你要在这个线程中共享的数据
调用get方法:由于threadLocal1是static对象
直接 创建threadlocal对象所在类的类名.threadLocal1.get();
此处()里面什么都不填,why?后面分析源码
2.2ThreadLocal源码
set方法源码:
get方法源码:
2..3ThreadLocal的DeBug分析
执行set方法之后:table下多出10这个size
在10中寻找referent(对象)-此处作为empty的key值
value--------做出作为empty的value值
与创建threadlocal对象时候的debug出的对象对比:
二者匹配,说明threadlocal内部就是这样的原理来实现的,通过thread.currentThread()方法获取到当前线程,使用threadLocal对象与共享的数据一一对应,从而保证线程安全。
标签:set,对象,threadlocal,数据共享,ThreadLocal,源码,线程 From: https://www.cnblogs.com/zitw/p/17037323.html