ThreadLocal解决了什么问题?
ThreadLocal作用:
为每个线程创建一个副本
实现在线程的上下文传递同一个对象,比如connection
理解
ThreadLoal 变量,它的基本原理是,同一个 ThreadLocal 所包含的对象(对ThreadLocal< StringBuilder >而言即为 StringBuilder 类型变量),在不同的 Thread 中有不同的副本(实际上是不同的实例):
- 因为每个 Thread 内有自己的实例副本,且该副本只能由当前 Thread 使用;
- 既然其它 Thread 不可访问,那就不存在多线程间共享的问题。
ThreadLocal 提供了线程本地的实例。它与普通变量的区别在于,每个使用该变量的线程都会初始化一个完全独立的实例副本。ThreadLocal 变量通常被private static修饰。当一个线程结束时,它所使用的所有 ThreadLocal 相对的实例副本都会被回收。