volatile && ThreadLocal

1、volatile 保证可见性,不保证原子性


1.png

2、ThreadLocal:
结构:


2.png

3、引用概念:
(1)强引用:不会回收

(2)软引用:内存不足的时候才开始回收,回收后的对象放入软引用队列
(3)弱引用:垃圾回收线程扫描到就回收,但是垃圾回收线程优先级低,回收稍慢,回收后的对象放入弱引用队列
(4)虚引用:待补充
4、ThreadLocal引发的内存泄露:

(1)
3.png

(2)解决方案:不用的时候remove掉
(3)弱引用不能在value上,因为gc触发就会回收,容易引发空指针异常!
5、ThreadLocal的线程不安全
(1)原因:存放的key对象在所有线程中的都是同一个
(2)例子:key是static的

你可能感兴趣的:(volatile && ThreadLocal)