关于 ThreadLocal 的一些概念

1. 用以界定ThreadLocal作用域的当前线程的ID,在系统内是重复利用的。
2. 系统的线程总数保持在一个限制总数量以下。
3. 如果系统繁忙,线程实例多,可能每次操作都能拿到不同的线程ID,
4. 如果系统很空闲,你的每次操作,很有可能看上去就只有1个ID在重复使用。
5. 从概念上,尽管前后两次操作可能都是同一个ID,实际上是属于两个不同的ThreadLocal域
6. 你的一次操作内的多个连续的对象方法间调用,属于同一个ThreadLocal域

用户信息需要跨操作读取,应当放在Session域中
一次操作下的跨多个对象方法调用的对象读取,(比如最典型的数据库连接对象), 应当放在ThreadLocal域中。

另外,在你完成这次操作的末尾,请把当前的ThreadLocal域内的数据清空,以免被下一次操作恰好拿到这个ThreadID的线程发现,造成混乱。