这玩意比ThreadLocal叼多了,吓得why哥赶紧分享出来。 (5)

简介: 这玩意比ThreadLocal叼多了,吓得why哥赶紧分享出来。 (5)

直接从数组中取出第 0 个位置的数据,然后循环干掉它就行。


set 方法就分析到这里啦,算是保姆级的一行行手把手教学了吧。


借助这个方法,也带大家看了内部结构。


点到为止。get 方法很简单的,大家记得自己去看一下哦。


我们再看一下这次 pr 提交的东西:


image.png


我们看看这四个线程池有什么变化:


image.png


就是换了工厂类。


换工厂类的目的是什么呢?


newThread 的时候,new 的是 InternalThread 线程。


好一个偷天换日。


前面我们说了,要用改造版的 ThreadLocal ,必须要配合 InternalThread 线程使用,否则就会退化为原生的 ThreadLocal 。


其实, Dubbo 这次提交,改造的东西并不多。关键的、核心的代码都是从 Netty 那边 copy 过来的。


我这就是一个引子,大家可以再去看看 Netty 的 FastThreadLocal 类。


关于这次 pr 提交


接下来又是 get 奇怪知识点的时刻了。


前面说了,这个 pr 里面出场人物一个比一个“骚”,这一节我带大家看一下,是怎么个“骚”法。


https://github.com/apache/dubbo/pull/1745·


首先是 pr 的提交者,carryxyh 同学的代码在 2018 年 5 月 15 日的时候被 merge 了:


image.png


正常来说,carryxyh 同学对于开源社区的一次贡献就算是完美结束了,简历上又可以浓墨重彩的写上一小笔。


但是 15 天之后发生的事情,可能是他做梦也想不到的。


那一天,一个叫做 normanmaurer 的哥们在这个 pr 下面说了一句话:


image.png


image.png


他的意思就是说:


哥们,你这个东西我怎么觉得是从 Netty 那边弄过来的呢?本着开源的精神,你直接弄过来是没有问题的,但是你至少得按照规矩办事吧?得遵循 AL2 协议来。而且我甚至看到你在你的 pr 里面提到了 Netty 。


至于这个 AL2 到底是什么,我是没有看明白的。


但是不重要,我就把它理解为一个给开源社区贡献代码时需要遵守的一个协议吧。


carryxyh 同学看到 Netty 的爸爸找他了,很快就回复了两条消息:


image.png


carryxyh同学说道:


老哥,我在 javadoc 里面提到了,我的灵感来源就是 Netty 的 FastThreadLocal 类。我写这个的目的就是告诉所有看到这个类的朋友,这里的大部分代码来自 Netty。


那我除了在 javadoc 里面写上来源是 Netty 外,还需要做什么吗?还有你说的 AL2 是什么东西,你能不能告诉我?


我一定会尽快修复的。


这么一来一回,我大概明白这两个人在说什么了。


Netty 的爸爸说你用了我的代码,这完全没有问题,但是你得遵循一个协议哦。


carryxyh 同学说,我已经在 javadoc 里说了我这部分代码就是来自 Netty 的,我真不知道还该做什么,请你告诉我。


Netty 的爸爸回复了一个链接:


image.png

image.png


image.png


image.png


大佬都出来了,接下来的对话大概也就是围绕着怎么才是一次符合开源标准的提交。


主席说,到底需不需要声明版权,得看代码的改造点多不多。


Netty 的爸爸说:据我所知,除了包名和类名不一样外,其他的基本没有变化。


image.png


最终 carryxyh 同学说把 Netty 的 FastThreadLocal 的文件头弄过来,是不是就完事了,

主席说:没毛病,我就是这样想的。


微信图片_20220426232726.png


image.png


image.png


好了,这应该是我所有文章中出现过的第 9 个用不上的傻吊知识点了吧。送给你,不必客气。


好了,这次的文章就到这里啦。

目录
相关文章
|
Java
「Java面试」被这题怼到不行,什么是可重入锁能解决什么问题?
一位3年工作经验的小伙伴,去一家互联网公司面试,结果被面试官怼了。面试官说:”这么简单的问题你都不知道?没法聊了,回去等通知吧“。然后,回来跟我是一阵诉苦。
132 0
|
9月前
|
Java
面试官:说一说CyclicBarrier的妙用!我:这个没用过...
【5月更文挑战第5天】面试官:说一说CyclicBarrier的妙用!我:这个没用过...
70 2
|
9月前
|
监控 Java 测试技术
面试准备不充分,被Java守护线程干懵了,面试官主打一个东西没用但你得会
面试准备不充分,被Java守护线程干懵了,面试官主打一个东西没用但你得会
71 1
|
Java 应用服务中间件 Spring
ThreadLocal 的使用及踩坑
ThreadLocal 的使用及踩坑
138 1
|
前端开发 Java 应用服务中间件
秋招面试题- - -JVM篇(二十二)
秋招面试题- - -JVM篇(二十二)
秋招面试题- - -JVM篇(二十二)
|
存储 缓存 Java
终于弄明白了ThreadLocal
ThreadLocal是Thread的局部变量,用于编多线程程序,对解决多线程程序的并发问题有一定的启示作用。
175 0
终于弄明白了ThreadLocal
|
算法 安全 Java
threadlocal再温习
早时总结过《ThreadLocal解析》、《FastThreadLocal解析》 最近看一些资料的时候,又重重发现了这类,不希望再温下,许多知识点,之前已经总结了,这篇文章主要有两个问题: 1、弱引用的意义 2、如何防键冲突
260 0
threadlocal再温习
|
存储 Java 数据库连接
面试官:知道ThreadLocal嘛?谈谈你对它的理解?(基于jdk1.8)
在java的多线程模块中,ThreadLocal是经常被提问到的一个知识点,提问的方式有很多种,可能是循序渐进也可能是就像我的题目那样,因此只有理解透彻了,不管怎么问,都能游刃有余。 这篇文章主要从以下几个角度来分析理解 1、ThreadLocal是什么 2、ThreadLocal怎么用 3、ThreadLocal源码分析 4、ThreadLocal内存泄漏问题 下面我们带着这些问题,一点一点揭开ThreadLocal的面纱。若有不正之处请多多谅解,并欢迎批评指正。
341 0
面试官:知道ThreadLocal嘛?谈谈你对它的理解?(基于jdk1.8)
|
监控 C语言 iOS开发
小码哥底层原理之RunLoop
RunLoop是一个运行循环,保证App能够持续运行,处理各种事件,节省CPU资源,没事处理的时候就进入休眠。
199 0
小码哥底层原理之RunLoop
|
存储 安全 算法
面试:为了进阿里,死磕了ConcurrentHashMap源码和面试题(二)
在上篇《面试:为了进阿里,死磕了ConcurrentHashMap源码和面试题(一)》,研究了基础原理,以及ConcurrentHashMap数据put的流程等线程安全的,来回顾一下面试的问题点
182 0
面试:为了进阿里,死磕了ConcurrentHashMap源码和面试题(二)