Java 源码解析实战 - ThreadLocal 原理

  1. 云栖社区>
  2. Java技术进阶>
  3. 博客>
  4. 正文

Java 源码解析实战 - ThreadLocal 原理

javaedge 2019-01-17 17:01:35 浏览25330
展开阅读全文

说起CS游戏,应该是每个中二少年的年少回忆了.
游戏开始时,每个人能够领到一把枪,枪把上有三个数字:子弹数、杀敌数、自己的命数,为其设置的初始值分别为1500、0、10.

设战场上的每个人都是一个线程,那么这三个初始值写在哪里呢?
如果每个线程都写死这三个值,万一将初始子弹数统一改成 1000发呢?
如果共享,那么线程之间的并发修改会导致数据不准确.
能不能构造这样一个对象,将这个对象设置为共享变量,统一设置初始值,但是每个线程对这个值的修改都是互相独立的.这个对象就是ThreadLocal

注意不能将其翻译为线程本地化或本地线程
英语恰当的名称应该叫作:CopyValueIntoEveryThread

示例代码

该示例中,无 set 操作,那么初始值又是如何进入每个线程成为独立拷贝的呢?
首先,虽然ThreadLocal在定义时重写了initial

网友评论

登录后评论
0/500
评论
javaedge
+ 关注
所属云栖号: Java技术进阶