首页 > 编程语言 > 详细

ThreadLocal(线程本地存储)

时间:2019-10-16 19:55:19      阅读:62      评论:0      收藏:0      [点我收藏+]

1. ThreadLocal,即线程本地变量或线程本地存储。

  threadlocal的作用是提供线程内的局部变量,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或组件之间一些公共变量传递的复杂度。

1.1 ThreadLocalMap(就是线程中的一个属性)

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

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

  threadLocalMap其实就是线程里面的一个属性,他在thread类中定义。

    ThreadLocal.ThreadLocalMap threadLocals=null;

技术分享图片

使用场景:

  最常见的threadlocal使用场景是用来解决数据库连接、session管理等。

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

 

ThreadLocal(线程本地存储)

原文:https://www.cnblogs.com/HuiH/p/11687770.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!