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

JAVA herman 795浏览
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog,发送下载链接帮助你免费下载!
本博客日IP超过1800,PV 2600 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog,之前的微信号好友位已满,备注:返现
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领

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

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

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

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

ThreadLocal 静态修饰

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

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

阿里巴巴开发手册中针对ThreadLocal的建议

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

ThreadLocal 源码中的注释说明

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

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

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

Struts2 的 ActionContext 源码

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

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号1:xmtxtt(5000人已满),微信号2:codedq(5000人已满),微信号3:xttblog(超2800)。备注:“xttblog”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!

本文原文出处:业余草: » 阿里面试题:关于ThreadLocal你从未考虑过的问题才是问题!