java_223_JVM核心机制_线程上下文类加载器_web服务器类加载机制_OSGI技术模块开发原理介绍_练习
程序员文章站
2022-04-28 16:37:22
...
线程上下文类加载器(了解即可)
package java_223_JVM核心机制_线程上下文类加载器_web服务器类加载机制_OSGI技术模块开发原理介绍_练习;
import java_219_JVM核心机制_类加载全过程_初始化时机_类的主动引用和被动引用_静态初始化块执行顺序问题_练习.Demo01;
/**
-
线程上下文类加载器及修改加载器
*/
public class Demo05 {
public static void main(String[] args) throws Exception {
ClassLoader loader1 = Demo05.class.getClassLoader();
System.out.println(loader1);//系统默认的加载器//Thread.currentThread当前线程的线程 ClassLoader loader2 = Thread.currentThread().getContextClassLoader();//getContextClassLoader获取上下文类装入器 System.out.println(loader2);//获得默认上下文加载器 //修改默认加载器;setContextClassLoader设置上下文类加载器;FileSystemClassLoader文件系统类加载器 Thread.currentThread().setContextClassLoader(new FileSystemClassLoader("d:/myjava/")); //打印当前线程的线程;获取上下文类装入器 System.out.println(Thread.currentThread().getContextClassLoader()); System.out.println("=====举例=========="); //例如 Class<Demo01> c = (Class<Demo01>)Thread.currentThread().getContextClassLoader().loadClass("java_219_JVM核心机制_类加载全过程_初始化时机_类的主动引用和被动引用_静态初始化块执行顺序问题_练习.Demo01"); System.out.println(c); System.out.println(c.getClassLoader());//因为定义了父类委派机制,所以结果与上面相同;可以在FileSystemClassLoader把父类委派机制关闭
}
}
//-----------------------------------
把上节课的public class FileSystemClassLoader extends ClassLoader{}类;复制到这个包下
//结果-----------------------
TOMCAT服务器的类加载机制(了解即可)
TOMCAT类加载是各个独立的,相互之间不可调用
OSGI原理介绍(了解即可)
OSGI类加载不是独立的,相互之间可调用并且调用后会使用原来类的加载器;