直接从数组中取出第 0 个位置的数据,然后循环干掉它就行。
set 方法就分析到这里啦,算是保姆级的一行行手把手教学了吧。
借助这个方法,也带大家看了内部结构。
点到为止。get 方法很简单的,大家记得自己去看一下哦。
我们再看一下这次 pr 提交的东西:
我们看看这四个线程池有什么变化:
就是换了工厂类。
换工厂类的目的是什么呢?
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 了:
正常来说,carryxyh 同学对于开源社区的一次贡献就算是完美结束了,简历上又可以浓墨重彩的写上一小笔。
但是 15 天之后发生的事情,可能是他做梦也想不到的。
那一天,一个叫做 normanmaurer 的哥们在这个 pr 下面说了一句话:
他的意思就是说:
哥们,你这个东西我怎么觉得是从 Netty 那边弄过来的呢?本着开源的精神,你直接弄过来是没有问题的,但是你至少得按照规矩办事吧?得遵循 AL2 协议来。而且我甚至看到你在你的 pr 里面提到了 Netty 。
至于这个 AL2 到底是什么,我是没有看明白的。
但是不重要,我就把它理解为一个给开源社区贡献代码时需要遵守的一个协议吧。
carryxyh 同学看到 Netty 的爸爸找他了,很快就回复了两条消息:
carryxyh同学说道:
老哥,我在 javadoc 里面提到了,我的灵感来源就是 Netty 的 FastThreadLocal 类。我写这个的目的就是告诉所有看到这个类的朋友,这里的大部分代码来自 Netty。
那我除了在 javadoc 里面写上来源是 Netty 外,还需要做什么吗?还有你说的 AL2 是什么东西,你能不能告诉我?
我一定会尽快修复的。
这么一来一回,我大概明白这两个人在说什么了。
Netty 的爸爸说你用了我的代码,这完全没有问题,但是你得遵循一个协议哦。
carryxyh 同学说,我已经在 javadoc 里说了我这部分代码就是来自 Netty 的,我真不知道还该做什么,请你告诉我。
Netty 的爸爸回复了一个链接:
大佬都出来了,接下来的对话大概也就是围绕着怎么才是一次符合开源标准的提交。
主席说,到底需不需要声明版权,得看代码的改造点多不多。
Netty 的爸爸说:据我所知,除了包名和类名不一样外,其他的基本没有变化。
最终 carryxyh 同学说把 Netty 的 FastThreadLocal 的文件头弄过来,是不是就完事了,
主席说:没毛病,我就是这样想的。
好了,这应该是我所有文章中出现过的第 9 个用不上的傻吊知识点了吧。送给你,不必客气。
好了,这次的文章就到这里啦。