ThreadLocal 对象通常用于防止对可变的实例变量或全局变量进行共享。
例如: 在单线程中可以维持一个全局的数据库的连接,并在程序启动时初始化。避免每一个方法都要传递一个connection 对象。
由于JDBC 的连接对象不一定是线程安全的,因此当多线程在没有协同的情况下使用全局变量时,就不是线程安全的,可以通过将JDBC 的连接保存到ThreadLocal 对象中,每一
个线程都要有自己的连接。
例如下面 demo:
private static ThreadLocal<Connection> connection=new ThreadLocal<Connection>(){
public Connection initValue(){
return DriverManager.getConnection(url;)
}
};
public static Connection getConnection() {
return connectionHolder.get();
}