当前位置: 首页 > news >正文

网页设计简单作业成品济南网络优化推广公司哪家好

网页设计简单作业成品,济南网络优化推广公司哪家好,运河网站制作,工业设计在线官网线程上下文类加载器线程上下文类加载器( Thread Context ClassLoader) 是从JDK1.2 引入的#xff0c;类Thread 的getContextClassLoader() 与 setContextClassLoader(Classloader var1) 分别用来设置线程的上下文类加载器。如果没有指定线程的上下文的加载器#xff0c;那么线…线程上下文类加载器线程上下文类加载器( Thread Context ClassLoader) 是从JDK1.2 引入的类Thread 的getContextClassLoader() 与 setContextClassLoader(Classloader var1) 分别用来设置线程的上下文类加载器。如果没有指定线程的上下文的加载器那么线程将会继承父线程的上下文类加载器。Java 的初始化线程的上下文加载器可以通过上下文类加载器加载类与资源。基本的获取和使用方法:public class ContextClassLoader {/*** 每个类都会使用自己的类加载器尝试去加载所依赖的类** 如果ClassX 依赖了 ClassY ,那么在ClassX的加载器将会在主动引用ClassY 并且ClassY尚未被加载的时候加载ClassY 这个类*/public static void main(String[] args) {System.out.println(Thread.currentThread().getContextClassLoader());System.out.println(Thread.class.getClassLoader());}}从 JDBC 说起在以前学习JDBC 的时候我们最深刻的印象应该是 Class.forName(xxxxxx); 简单的伪代码如下图:import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;public class DbUtil {public static final String URL jdbc:mysql://localhost:3306/db;public static final String USER root;public static final String PASSWORD 123456;public static void main(String[] args) throws Exception {Class.forName(com.mysql.jdbc.Driver);Connection conn DriverManager.getConnection(URL, USER, PASSWORD);Statement stmt conn.createStatement();ResultSet rs stmt.executeQuery(SELECT user_name, age FROM student);}}}从上面的代码中import导入的 jdbc 的相关类可以看到他们均来自于 java.sql 包下根据类的双亲委派机制可以非常清晰的知道这些接口肯定是来自于 系统类加载器加载。那么具体的其实现类使用我们的应用类加载器加载所以问题出现 其中的JDBC 标准是由启动器类加载器加载而具体的实现的类是由系统类加载器加载所以这就会导致启动类加载器加载的JDBC标准类无法找到子加载器加载的JDBC实现TCC 的作用: 改变双亲委托模型上面的实现模式我们称之为SPI (服务提供接口) 这种服务方式通过类的双亲委派机制就会出现问题。这是加载器双亲委派模型的一个缺陷但是JVM设计者做了一个不太优雅的的方式解决就是线程上下文类的加载器  父 ClassLoader 可以使用 Thread.currentThread().getContextClassloader() 所制定的Classloader 加载的类这就改变了父ClassLoader不能使用子ClassLoader加载的类以及其他没有父子关系的加载器加载类的访问情况即改变了双亲委托模型。Java中所有涉及SPI的加载动作都采用这种方式, 实现方案包括:  JDBC、JNDI、JCE以及JBI等TCC 的使用模式线程上下文的使用模式主要分为: 获取- 设置 - 使用 - 还原 , 伪代码可以参考:// 获取原类加载器ClassLoader classLoader Thread.currentThread().getContextClassLoader();// 通过一些手段获取的目标类加载器ClassLoader targetClassLoader xxxx;try {// 将新的类加载器设置为当前上下文类加载器Thread.currentThread().setContextClassLoader(targetClassLoader);// 使用加载器加载一些自己需要的类loadClass();} finally {// 还原Thread.currentThread().setContextClassLoader(classLoader);}总结当高层提供了统计的接口让低层去实现同时又要在高层加载(或者实例化)这个类那么就必须通过线程上下文类加载器帮助高层ClassLoader 加载这个类父加载器不能访问使用子加载器加载的类子加载器可以访问使用父加载器加载的类就SPI服务而言有些接口是启动类加载器加载但具体的实现各个厂商有自己不同的实现方式这些实现是不会被启动类加载器加载的这样传统的双亲委托机制就无法满足 SPI 的要求。而通过设置当前线程的上下类加载器就可以通过当前线程的上下文类加载器加载这些类。Java中所有涉及SPI的加载动作都采用这种方式, 实现方案包括:  JDBC、JNDI、JCE以及JBI等拓展学习点Tomcat 中的类加载机制SpringWeb 中类实现的机制
http://www.pierceye.com/news/221490/

相关文章:

  • 怎样做加入购物车的网站wordpress SQL 配置
  • 网站设计原型品牌建设人才队伍建设
  • 常熟网站网站建设电商购物平台软件开发
  • 网站页尾信息网站建设费用摊销年限
  • 制作个人网站要多少钱重庆工程信息官网
  • 那里建设网站好珠海网站建设公司哪个好
  • 从化市营销型网站建设工业和信息化部五系网站建设
  • 网站建设的开发方法有哪些wordpress 企业站主题
  • 长治网站建设案例找人做一个小网站需要多少钱
  • html5 网站布局应用教程韩雪冬 网站
  • 行业网站维护印刷公司网站模板
  • 做自媒体需要用的网站wordpress更换语言包
  • 电子书推送网站怎么做重庆产品网站推广
  • 免费做课设的网站织梦本地安装网站
  • 龙岗做网站公司szaow品牌网站建设公司哪好
  • 设计网站项目描述怎么样下载网页上的视频
  • 比较开放的浏览器清远网站seo
  • 个人网站的域名注册怎么做手机app软件开发
  • 卡盟网站开发google play三件套
  • 缠绕机东莞网站建设技术支持在线协同办公软件
  • 邵阳做网站哪个公司好接推广网站
  • 媒体网站模版网站添加提醒
  • 平度网站建设公司电话制作动画网站模板
  • 教育手机网站开发郑州网站修改建设
  • 查询网站入口长春网站排名推广
  • 中国建设工程造价网站丰润网站建设
  • 电子项目外包网站可以发描文本的网站
  • 论文中引用网站中wordpress外汇行情
  • 宁城网站建设磁力宝
  • 找人做彩票网站多少钱茶叶网站flash模板