ThreadLocal

ThreadLocal,即线程本地变量。如果你创建了一个ThreadLocal变量,那么访问这个变量的每个线程都会有这个变量的一个本地拷贝,多个线程操作这个变量的时候,实际是操作自己本地内存里面的变量,从而起到线程隔离的作用,避免了线程安全问题。

ThreadLocal内存结构图

 

 

 

当多个线程同时读写同一共享变量时存在并发问题,如果不共享不就没有并发问题了,一个线程存一个自己的变量,类比原来好几个人玩同一个球,现在一个人一个球,就没有问题了,如何把变量存在线程上呢?其实ThreadLocal 类内部已经有一个Map容器用来存变量了,ThreadLocalMap是一个Map,key是ThreadLocal,value是Object。

 

ThreadLocal的应用场景

ThreadLocal 适用于每个线程需要自己独立的实例且该实例需要在多个方法中被使用,也即变量在线程间隔离而在方法或类间共享的场景。

  • 数据库连接池
  • 会话管理中使用

ThreadLocal 是每个线程独享的局部变量,ThreadLocal 使用弱引用的 ThreadLocalMap 保存不同的 ThreadLocal 变量。

 

待续。。。

ThreadLocal可能引起的内存泄露?

https://www.cnblogs.com/onlywujun/p/3524675.html

https://www.cnblogs.com/fsmly/p/11020641.html

https://blog.csdn.net/jackFXX/article/details/82857476

posted @ 2019-08-05 16:07  Nausicaa0505  阅读(101)  评论(0)    收藏  举报