ThreadLocal 线程变量,和Synchonized都用于处理多线程并发问题.
区别在于:ThreadLocal用数据隔离
Synchonized用数据共享
一句话理解ThreadLocal,向ThreadLocal里面存东西就是向它里面的Map存东西的,然后ThreadLocal把这个Map挂到当前的线程底下,这样Map就只属于这个线程了。
ThreadLocal为每一个线程创建一个单独的map集合,在map集合中的key是本地线程,value是线程变量
思路:用set()方法将连接对象放入ThreadLocal中,使用时就通过get()方法拿出来.
//将连接存入ThreadLocal中
public static Connection getConnection(){
Connection connection = threadLocal.get();
if (connection!=null){
return connection;
}
try{
connection=JdbcUtils.getConnection();
threadLocal.set(connection);
}catch (Exception e){
e.printStackTrace();
}