您的位置:首页 > 编程语言 > Java开发

java多线程(二)---------------ThreadLocal总结

2017-09-21 17:18 232 查看
ThreadLocal

1、 理解:

很多地方叫做线程本地变量,也叫做线程本地存储。ThreadLocal为变量在每个线程中创建了一个副本,那么每个线程可以访问自己内部的副本变量

2、 总结:

a. 实际的通过ThreadLocal创建的副本是存储在每个线程自己的threadLocals对象中的

b. 为何ThreadLocals的类型ThreadLocalMap的键值为ThreadLocal对象,因为每个线程中可有多个ThreadLocal变量,就像下面代码中的longLocal和Stringlocal

c. 在进行get之前,必须先set,否则会报空指针异常

d. 如果想在get之前不需要set就能正常访问的话,必须重写initialValue()方法 ????

3、 THreadLocal的应用场景

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

如:

// 数据库连接:
protected static final String DB_URL = null;
private static ThreadLocal<Connection> connectionHolder = new ThreadLocal<Connection>() {
@Override
protected Connection initialValue() {
return DriverManager.getConnection(DB_URL);
}
};

// Session管理:

private static ThreadLocal threadSession = new ThreadLocal();
public static Session getSession() throws Exception {
Session s = (Session)threadSession.get();

if ( s == null ) {
s = getSessionFactory().openSession();
threadSession.set(s);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  threadloca 线程