当前位置:   article > 正文

ThreadLocal作用

ThreadLocal作用

ThreadLocal作用(线程本地存储)

ThreadLocal,很多地方叫做线程本地变量,也有些地方叫做线程本地存储,ThreadLocal的作用是提供线程内的局部变量,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或者组件之间一些公共变量的传递的复杂度。

ThreadLocalMap(线程的一个属性)

  1. 每个线程中都有一个自己的ThreadLocalMap类对象,可以将线程自己的对象保持到其中,各管各的,线程可以正确的访问到自己的对象。

  2. 将一个共用的ThreadLocal静态实例作为key,将不同对象的引用保存到不同线程的ThreadLocalMap中,然后在线程执行的各处通过这个静态ThreadLocal实例的get()方法取得自己线程保存的那个对象,避免了将这个对象作为参数传递的麻烦。

  3. ThreadLocalMap其实就是线程里面的一个属性,它在Thread类中定义

    ThreadLocal.ThreadLocalMap threadLocals = null;
    
    • 1

在这里插入图片描述

使用场景

最常见的ThreadLocal使用场景为用来解决数据库连接、Session管理等。

private static final ThreadLocal threadSession = new ThreadLocal();
public static Session getSession() throws InfrastructureException{
    Session s = (Session)threadSession.get();
    try{
        if(s == null){
            s = getSessionFactory().openSession();
            threadSession.set(s);
        }
    }catch(HibernateException ex){
        throw new InfrastructureException(ex);
    }
    return s;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/794498
推荐阅读
相关标签
  

闽ICP备14008679号