Thread.currentThread().setContextClassLoader

线程中的ClassLoader每一个运行中的线程都有一个成员contextClassLoader,用来在运行时动态地载入其它类,能够使用方法Thread.currentThread().setContextClassLoader(...);更改当前线程的contextClassLoader,来改变其载入类的行为;也能够经过方法Thread.currentThread().getContextClassLoader()来得到当前线程的ClassLoader。  
实际上,在Java应用中全部程序都运行在线程里,若是在程序中没有手工设置过ClassLoader,对于通常的java类以下两种方法得到的ClassLoader一般都是同一个 java

 

this.getClass.getClassLoader();  
Thread.currentThread().getContextClassLoader();  
方法一获得的Classloader是静态的,代表类的载入者是谁;方法二获得的Classloader是动态的,谁执行(某个线程),就是那个执行者的Classloader。对于单例模式的类,静态类等,载入一次后,这个实例会被不少程序(线程)调用,对于这些类,载入的Classloader和执行线程的Classloader一般都不一样。
web

本站公众号
   欢迎关注本站公众号,获取更多信息