《阿布的点点滴滴》:一分钟了解threadlocal的精髓(三言两语,让你醍醐灌顶)

       客官!上车,坐稳了,出发!!!

事情的经过是这样的:       

       时光回溯到2022年的某个夜深人静的夜晚,在一个小巷子里,一个长发飘飘,身着红裙的美女轰然倒地。作为红十字会的一员,紧急心脏复苏还是手拿把掐的。

       ‘妹子心脏停止跳动’,‘周边环境安全’,‘解开衣扣’,‘双手按压胸口1,2,3…30 31,草,多按一下…’,‘清理口腔异物’,‘人工呼吸’…  。

       不知过了多久,终于,妹子心脏开始跳动!!!

       我如释重负的喊了句,‘患者恢复心跳,等待救援’,起身就要走,但我的脚不知被什么东西紧紧攥着,低头一看,原来是妹子的玉手,‘妹子,你放心,你已经没事了’,我安慰道。‘你为什么要救我’,妹子埋怨着。‘年纪轻轻的,有什么坎过不去呢…’,‘…’,开导了很久,终于妹子开口了,‘我活着有什么用,我不懂Threadlocal,我不懂!’,‘我教你啊,给我一分钟时间,肯定把你教会’,‘我不信,我学它很久了,就是一直搞不清,如果你能教会我,我以身相许。如果我还是不会,那你就不要救我了’。

       突然,我意识到了问题的严重性,整理了一下思路,开始了下面的对话 ...     

         ‘你知道它有什么作用吗?’

         妹子答道 ‘应该是为了方便上下文传参,方法中不用加入参,就可以取到想要的内容’

         ‘那让你去实现这个功能,你如何做?’

         妹子想了想,答道‘在Thread类里冗余一个变量,让开发者自己去管理,就好了’

         ‘说到点上了,那这个变量是什么类型的比较好呢?’

         妹子说 ‘一个object类型就行’

         ‘那假如想存多个值呢?’

         妹子说 ‘那就使用map吧,干净又卫生’

        于是乎,就有了下面的代码

         ‘那map里的key,如何定义?让开发者自己定义也行,但不优雅。还有别的好办法吗?’

         听到这个问题,妹子恍然大悟 ‘原来Threadlocal的作用在这里,为了方便生成map里的key?’

        ‘嗯呢,你真聪明。Threadlocal里有个内部类Threadlocalmap,这个map就是Thread类里面冗余的变量,而key,就是Threadlocal本身’

  继续看源码

        妹子开心的说‘哇,原来这么简单!谢谢你啊小哥哥,我以后就是你的人了’

        ‘我一阵无语’

        妹子又问‘那这个有什么性能问题吗’

        我看了看时间,已经凌晨十二点,‘这里有点冷,你先起来。我们换个地方继续深入讨论这个问题吧’

        妹子连连点头…

        以下内容付费观看。

       凡事要知其然知其所以然,Java也遵循因果循环。当以旁观者的身份去学一门技术时,往往无法了解作者的真实意图。

        这时,不妨站在作者Doug Lea的角度去思考,往往会有更好的效果,并让你印象深刻,醍醐灌顶!!!

    (地铁码字不宜,欢迎点赞投币。欢迎关注,后面会更精彩!)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值