Java 源码解析实战 - ThreadLocal 原理
说起CS游戏,应该是每个中二少年的年少回忆了.
游戏开始时,每个人能够领到一把枪,枪把上有三个数字:子弹数、杀敌数、自己的命数,为其设置的初始值分别为1500、0、10.
设战场上的每个人都是一个线程,那么这三个初始值写在哪里呢?
如果每个线程都写死这三个值,万一将初始子弹数统一改成 1000发呢?
如果共享,那么线程之间的并发修改会导致数据不准确.
能不能构造这样一个对象,将这个对象设置为共享变量,统一设置初始值,但是每个线程对这个值的修改都是互相独立的.这个对象就是ThreadLocal
注意不能将其翻译为线程本地化或本地线程
英语恰当的名称应该叫作:CopyValueIntoEveryThread
示例代码
该示例中,无 set 操作,那么初始值又是如何进入每个线程成为独立拷贝的呢?
首先,虽然ThreadLocal
在定义时重写了initial
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Python的5种传参姿势,两分钟就能了解
位置实参 实参和形参的位置是关联对应的。一个实参对应一个相应位置的形参。 本人对于Python学习创建了一个小小的学习圈子,为各位提供了一个平台,大家一起来讨论学习Python。欢迎各位到来Python学习群:515267276一起讨论视频分享学习。Python是未来的发展方向,正在挑战我们的分析能力及对世界的认知方式,因此,我们与时俱进,迎接变化,并不断的成长,掌握Python核心技术,才是掌握真正的价值所在。 关键字实参 实参以 key=value 的形式传递,因为已经指明了将 value 传给哪个参数,所以位置顺序就无关紧要了。 默认值 可以给形参指定默认值,当没有提供实参的时候,就会使用默认值。 利用这个特性可以实现可选参数。 传递任意数量的实参 使用形参 *topping 可以使函数能够传递任意数量的实参。 传递的参数会被 封装到一个元组中
- 下一篇
Python第一讲——高质量数据挖掘模型开发七步法
长期以来有两大方法论指导数据挖掘项目实施,分别是CRIP-DM和SEMMA。前者由NCR、Clementine、OHRA和Daimler-Benz的数据挖据项目总结而来,后者是SAS公司的数据挖掘项目实施方法论。很多人仔细读过两个文档,却依旧不能做出好用的模型,难道是“听过很多大道理,却依然过不好这一生”,本次分享将为大家揭晓答案。 直播时间:1月20日(本周日)18:00—19:00 讲师:常国珍,北京大学管理学博士,毕马威管理咨询大数据资深顾问,中国大数据产业生态联盟专家委员会委员。具有多年金融、电信及零售行业数据科学项目实施和咨询服务经验。专注于零售金融与泛零售领域的用户需求分析、用户行为分析和人工智解决方案。著有《Python数据科学:技术详解与商业实践》等三本数据科学图书。 欢迎加入Python钉群收看直播 或点击群链接:htt
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- MySQL8.0.19开启GTID主从同步CentOS8
- Hadoop3单机部署,实现最简伪集群
- CentOS8编译安装MySQL8.0.19
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Thymeleaf,官方推荐html解决方案