文章目录
前言
最近换了份工作,面试官面试时表示我进来后应该会和activiti打交道,本着有点久没用了,翻一翻新公司原本activiti工具包源码回忆一下的想法,把activiti的包翻了一遍,阅读基本没啥障碍,但是有个地方的设计引起了我的兴趣(这里由于不方便贴出公司代码,所以就大概描述下)
有一个activiti的工具类,里面封装了一个ThreadLocal的成员变量,包着一个Map<String,Object>,里面一共俩方法——get和clear,就我理解来讲,作用是做一个线程里面的全局变量,但是这勾起了我的远古回忆:ThreadLocal——虽然我知道这是个啥,但是从来没用过,也不知道有什么隐患,还没有在同事的代码中见过,此时难得在同事代码中看见了,见猎心喜的我开始了我的翻源码之旅…
ThreadLocal是什么
不知道次博客是否是你阅读的第一篇关于ThreadLocal博客,如果不是,估计你少不了看见:
ThreadLocal是一个将在多线程中为每一个线程创建单独的变量副本的类
之类的话,这话没错,但是不利于第一次翻博客的我们理解。。(我第一次翻文档的时候就给我搞的挺迷惑的)
那么说人话
java中每个Thread都有一个本地变量池(其实就是个Map,后面会提到)