zoukankan      html  css  js  c++  java
  • Thread.currentThread().getContextClassLoader()与Test.class.getClassLoader()的区别

    前者用户线程中动态加载,动态加载资源

    后者只是固定的加载

    http://bbs.csdn.net/topics/370181498

    如果楼主了解过openfire应该对ClassLoader有比较深的理解。
    打个简单的比方,你一个WEB程序,发布到Tomcat里面运行。
    首先是执行Tomcat org.apache.catalina.startup.Bootstrap类,这时候的类加载器是ClassLoader.getSystemClassLoader()。
    而我们后面的WEB程序,里面的jar、resources都是由Tomcat内部来加载的,所以你在代码中动态加载jar、资源文件的时候,首先应该是使用Thread.currentThread().getContextClassLoader()。如果你使用 Test.class.getClassLoader(),可能会导致和当前线程所运行的类加载器不一致(因为Java天生的多线程)。
    Test.class.getClassLoader()一般用在getResource,因为你想要获取某个资源文件的时候,这个资源文件的位置是相对固定的。
    建议楼主去查看一下openfire或者tomcat内部的源码,对ClassLoader会有比较深的理解。
    在openfire里面,openfire使用的类加载器,以及每个插件使用的类加载器都不一样。

  • 相关阅读:
    js学习(三)对象与事件
    js学习(二)
    js学习(一)
    SSM+Redis结构框架及概述
    javaBean、EJB、POJO
    flex布局时的居中问题
    layui后台管理系统的坑
    基于element的模糊查询
    vue数组的运用
    uni-app 图片上传(uploadFile)
  • 原文地址:https://www.cnblogs.com/IamThat/p/3113875.html
Copyright © 2011-2022 走看看