欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java_223_JVM核心机制_线程上下文类加载器_web服务器类加载机制_OSGI技术模块开发原理介绍_练习

程序员文章站 2022-04-28 16:37:22
...

线程上下文类加载器(了解即可)
java_223_JVM核心机制_线程上下文类加载器_web服务器类加载机制_OSGI技术模块开发原理介绍_练习
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{}类;复制到这个包下
    //结果-----------------------

java_223_JVM核心机制_线程上下文类加载器_web服务器类加载机制_OSGI技术模块开发原理介绍_练习

TOMCAT服务器的类加载机制(了解即可)
TOMCAT类加载是各个独立的,相互之间不可调用
java_223_JVM核心机制_线程上下文类加载器_web服务器类加载机制_OSGI技术模块开发原理介绍_练习
OSGI原理介绍(了解即可)
OSGI类加载不是独立的,相互之间可调用并且调用后会使用原来类的加载器;
java_223_JVM核心机制_线程上下文类加载器_web服务器类加载机制_OSGI技术模块开发原理介绍_练习