在并发编程中,如果多个线程共享数据,如果没有对该共享数据进行同步处理,那么在程序运行过程中可能出现一些奇怪的问题。例如一个数据库连接对象,被多个线程使用时,如果某个线程关闭了连接,那在正在使用该连接的线程将抛出异常,这种情况可以使用TreadLocal工具来实现,每一个线程单独拥有一个数据库连接的备份,线程之间互不影响。
一、ThreadLocal类中主要的方法有:
1、initialValue():用于初始化ThreadLocal中存储的对象
该方法是protected,默认返回类型是null,所以在使用过程中需要对该方法进行重写。
2、get():获取ThreadLocal存储的对象
public T get() { Thread t = Thread.currentThread(); ThreadLocalMap map = getMap(t); if (map != null) { ThreadLocalMap.Entry e = map.getEntry(this); if (e != null) { @SuppressWarnings("unchecked") T result = (T)e.value;