ThreadLocal 适用于每个线程需要自己独立的实例且该实例需要在多个方法中被使用,也即变量在线程间隔离而在方法或类间共享的场景。
当多个线程同时读写同一共享变量时存在并发问题,如果不共享不就没有并发问题了,一个线程存一个自己的变量,类比原来好几个人玩同一个球,现在一个人一个球,就没有问题了,如何把变量存在线程上呢?其实ThreadLocal 类内部已经有一个Map容器用来存变量了,ThreadLocalMap是一个Map,key是ThreadLocal,value是Object。
最常见的ThreadLocal使用场景为 用来解决 数据库连接、Session管理等。
ThreadLocal 是每个线程独享的局部变量,ThreadLocal 使用弱引用的 ThreadLocalMap 保存不同的 ThreadLocal 变量。
待续。。。