java.lang.ThreadLocal类
它是线程的局部变量
-
每一个使用ThreadLocal变量的线程,都会持有其一个副本。线程间的副本不会冲突
-
每个线程都保持一个对其线程局部变量副本(ThreadLocal对象)的隐式引用
-
通过ThreadLocal存取的数据,总是与当前线程相关,从而为多线程环境提供了一种隔离机制
-
实现的思路很简单,在ThreadLocal类中有一个Map,用于存储每一个线程的变量的副本
-
应用场景
private static final ThreadLocal<Connection> local = new ThreadLocal<Connection>();//获得线程局部变量对象 private static Connection getConnection(){ Connection con = null; try { con = local.get(); //从线程缓冲区中取数据库连接对象 if(con == null){ Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”); String url = “jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=messageBorder”; String user = “sa”; String password = “admin”; con = DriverManager.getConnection(url, user, password); local.set(con);//把创建好的数据库连接对象放入线程缓冲区 } } catch (SQLException e) { e.printStackTrace(); } return con; }