类的含义
ThreadLocal是解决线程安全问题一个很好的思路,它通过为每个线程提供一个独立的变量副本解决了变量并发访问的冲突问题.
现阶段,未使用,理解即可.使用格式如下:
Case1
public class ConnectionManager {
private static ThreadLocal<Connection> connectionHolder = new ThreadLocal<Connection>() {
@Override
protected Connection initialValue() {
Connection conn = null;
try {
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/test", "username",
"password");
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
};
public static Connection getConnection() {
return connectionHolder.get();
}
public static void setConnection(Connection conn) {
connectionHolder.set(conn);
}
}
Case2
public class ThreadLocalContext {
private static ThreadLocal<Map<String, Object>> context = new ThreadLocal<Map<String, Object>>() {
@Override
protected Map<String, Object> initialValue() {
return new HashMap<String, Object>();
}
};
/**
* 放入ThreadLocal的Context.
*/
public static void put(String key, Object value) {
context.get().put(key, value);
}
/**
* 取出ThreadLocal的Context.
*/
@SuppressWarnings("unchecked")
public static <T> T get(String key) {
return (T) (context.get().get(key));
}
/**
* 清理ThreadLocal的Context内容.
*/
public static void reset() {
context.get().clear();
}
}