ThreadLocal:线程局部变量,作用实现把对象绑定到线程中,从而实现线程安全。
在数据库中获取collection连接时,要保证每个用户各自获取连接相同,从而实现各自事务的开启等操作。
/*
将connection绑到线程上
*/
public static Connection threadConn(){
Connection connection = threadLocal.get();
if(connection==null){
try {
//dataSource是一个连接池,从连接池中获取连接,绑定到线程中。
connection = dataSource.getConnection();
threadLocal.set(connection);
} catch (SQLException e) {
e.printStackTrace();
}
}
return connection;
}
ThreadLocal底层是一个map集合。