-
类加载器的作用
实现通过一个类的全限定名来获取描述此类的二进制字节流, 并将字节流装载到虚拟机中
每一个类加载器都拥有一个独立的类名称空间. 对于任意一个java类, 它需要由加载它的类加载器和该类本身一同确立其在java虚拟机中的唯一性
- 系统预定义的类加载器
- 启动类加载器(bootstrap classloader)
- 扩展类加载器(extension classloader)
- 应用程序类加载器(application classloader)
- 类加载器的双亲委派模型(parent delegation model)
双亲委派模型
的优点: 保证了java核心类库的类型安全, 保证java程序的稳定运作;
-
线程上下文类加载器(thread context classloader)
线程上下文类加载器(thread context class loader)
是从 JDK 1.2 开始引入的. 类java.lang.Thread
中的方法getContextClassLoader()
和setContextClassLoader(ClassLoader cl)
用来获取和设置线程的上下文类加载器. 如果没有通过setContextClassLoader(ClassLoader cl)
方法进行设置的话,线程将继承其父线程的上下文类加载器. Java 应用运行的初始线程的上下文类加载器是系统类加载器. 在线程中运行的代码可以通过此类加载器来加载类和资源。