根据JDK文档中的解释:ThreadLocal的作用是提供线程内的局部变量,这种变量在多线程环境下访问时能够保证各个线程里变量的独立性。
从这里可以看出,引入ThreadLocal的初衷是为了提供线程内的局部变量,而不是为了解决共享对象的多线程访问问题。实际上,ThreadLocal根本就不能解决共享对象的多线程访问问题。




说在什么时候用到就是在spring中,绝大部分Bean都可以声明为singleton作用域,singleton作用域的意思就是单例模式,且默认是饿汉模式,下面所说.

总之,就是因为Spring对一些Bean中非线程安全状态采用ThreadLocal进行处理,来保证线程安全.