这里把ThreadLocal定义为static还有一个好处就是,由于ThreadLocal有强引用在,那么在ThreadLocalMap里对应的Entry的键会永远存在,那么执行remove的时候就可以正确进行定位到并且删除!!!
最佳实践做法应该为:
抽象为:
try { // 其它业务逻辑} finally { threadLocal对象.remove();}
思考
如果面试的时候,可以把上面的内容都可以讲到,个人觉得就非常好了,回答的就挺完美了。但是如果你可以进行下面的回答,那么就更完美了。
对于ThreadLocal,我在看Netty源码的时候,还了解过FastThreadLocal,xxxxx一些列内容,那就是一个升级了。
在本地进行测试中,FastThreadLocal的吞吐量是jdkThreadLocal的3倍左右。