Java多线程与并发之ThreadLocal( 四 )
thread_1 1
thread_0 1
thread_3 1
thread_4 1
thread_2 1
可以看到每个线程的获取的初始值都是0 , 并且对num++的操作也互不影响
3.ThreadLocal如何实现的
3.1 ThreadLocal的数据结构
ThreadLocal内部维护的是一个类似Map的ThreadLocalMap数据结构 , 而每个Thread类 , 都有一个ThreadLocalMap成员变量 。 ThreadLocalMap将线程本地变量(ThreadLocal)作为key , 线程变量的副本作为value , 如图所示:
需要注意的是ThreadLocal中的Entry的key和value的关系有系统进行维护 , 若维护不当则可能导致多线程状态下的不安全(一般不会 , 至少需要注意) 。
推荐阅读
- 辉月|王者:复活甲被动触发之后,是换名刀,还是换辉月?你觉得呢?
- 我的世界|我的世界:Java种子新出炉,内陆蘑菇岛算什么,这些种子它不香?
- fate grand order|FGO:FA复刻强化本介绍,大公踏出了连发之路的第一步
- Java|Java 地位不保,落后已成定局 ?| 10月编程语言排行
- Java|Lombok 简单方便,为什么有些公司不让用?
- 酷睿处理器|全线冲击超线程!十代i3一出,9100F王朝真的要结束了吗
- Java|面试官:开口要25K,我就用了2成功力,把你问到怀疑人生(Java)
- 在家里睡觉、刷剧,不如看看这些份Java面试宝典,跳槽面试不心慌!
- 工作10年,面试超过300人想进阿里的同学,总结出的java面试69题
- BAT面试题汇总:分布式+Dubbo +JVM+微服务+多线程+Spring附答案