博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ThreadLocal
阅读量:5305 次
发布时间:2019-06-14

本文共 959 字,大约阅读时间需要 3 分钟。

ThreadLocal主要提供了保持对象的方法和避免参数传递的方便的对象访问方式

ThreadLocal的应用场合,最适合的是按线程多实例(每个线程对应一个实例)的对象的访问

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

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

3.如果要把本来线程共享的对象通过ThreadLocal.set()放到线程中也可以,可以实现避免参数传递的访问方式,但是要注意get()到的是那同一个共享对象,并发访问问题要靠其他手段来解决。但一般来说线程共享的对象通过设置为某类的静态变量就可以实现方便的访问了

ThreadLocal应用

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;    }

如果大家不懂可以查JDK,查看实现原理

转载于:https://www.cnblogs.com/superws/p/5832055.html

你可能感兴趣的文章
基本数据类型编程练习一
查看>>
12C 启用客户端通过SID 连接PDB,防止ORA-12545
查看>>
java中基本数据类型和包装类的区别
查看>>
项目指南
查看>>
浅谈USB驱动架构 转载
查看>>
android SharedPreferences的用法
查看>>
PENETRATION TESTING PRACTICE LAB - VULNERABLE APPS / SYSTEMS
查看>>
JavaScript获取鼠标位置的三种方法
查看>>
HDU 4635 Strongly connected (强连通分量)
查看>>
USACO / Stringsobits (DP构造/康托展开)
查看>>
康托展开
查看>>
如何写用户导向的互联网文案?
查看>>
寻找最长单词链
查看>>
判断PC机大小端
查看>>
UVa 156 - Ananagrams
查看>>
nginx.conf
查看>>
oracle实验6-8:关于null值,列的别名,去掉重复行
查看>>
23.redis持久化之RBD
查看>>
BZOJ1070 [SCOI2007]修车 最小费用最大流
查看>>
HTML关于表单
查看>>