1.为什么需要线程上下文类加载器

根据Thread类的文档你会发现线程上下文方法是从JDK1.2开始引人的,getContextClassLoader() 和setContextClassLoader(ClassLoader cl) 分别用于获取和设置当前线程的上下文类加载器,如果当前线程没有设置上下文类加载器,那么它将和父线程保持同样的类加载器。站在开发者的角度,其他线程都是由Main线程,也就是main函数所在的线程派生的,它是其他线程的父线程或者祖先线程。下面进行线程上下文类的简单测试,代码如所示。

  1. public class MainThreadClassLoader {
  2. public static void main(String[] args) {
  3. System.out.println(Thread.currentThread().getContextClassLoader());
  4. }
  5. }

2.数据库驱动的初始化源码分析