阿里面试题:关于ThreadLocal你从未考虑过的问题才是问题!

早上起来,就发现有网友私信我,说去面了一下阿里,找了一下打击。问了为什么网上大量使用 ThreadLocal 的源码都会加上 private static?

他被难住了,因为他从来都没有考虑过这个问题。

这个问题,既然是阿里的面试题,那么我们来看看阿里的开发手册上有没有。

幸运的是,我一搜,果真还有。

阿里面试题:关于ThreadLocal你从未考虑过的问题才是问题!
ThreadLocal 静态修饰

虽然,不是特别的针对的是 ThreadLocal,但是加了 private static 是没跑的。

然后,我们再看开发手册上的另外一个说明。

阿里面试题:关于ThreadLocal你从未考虑过的问题才是问题!
阿里巴巴开发手册中针对ThreadLocal的建议

这里面解释了为什么要建议对 ThreadLocal 静态化。另外,我们从 ThreadLocal 源码的注释中,也可以看到,它推荐我们使用 private static 来修饰它。

阿里面试题:关于ThreadLocal你从未考虑过的问题才是问题!
ThreadLocal 源码中的注释说明

总的来说,ThreadLocal 适用于每个线程需要自己独立的实例且该实例需要在多个方法中被使用,也即变量在线程间隔离而在方法或类间共享的场景。

至于,是否使用 private 修饰与 ThreadLocal 本身无关。也就是说,是否使用 private 修饰是一个普遍的问题而不是与 ThreadLocal 有关的一个具体问题。或者说是一个习惯性问题。

比如,在 Struts2 的 ActionContext 中,ThreadLocal 就没有被 private 修饰!

阿里面试题:关于ThreadLocal你从未考虑过的问题才是问题!
Struts2 的 ActionContext 源码

其实,你在面试过程中,可以和面试官交换资源。不懂的也可以反问他!

阿里面试题:关于ThreadLocal你从未考虑过的问题才是问题!

: » 阿里面试题:关于ThreadLocal你从未考虑过的问题才是问题!

原创文章,作者:306829225,如若转载,请注明出处:https://blog.ytso.com/252129.html

(0)
上一篇 2022年5月4日
下一篇 2022年5月4日

相关推荐

发表回复

登录后才能评论