代码改变世界

关于Thread.getContextClassLoader的使用场景问题

2015-12-22 15:39  Loull  阅读(2115)  评论(0编辑  收藏  举报

Thread context class loader存在的目的主要是为了解决parent delegation机制下无法干净的解决的问题。假如有下述委派链: 
ClassLoader A -> System class loader -> Extension class loader -> Bootstrap class loader 

那么委派链左边的ClassLoader就可以很自然的使用右边的ClassLoader所加载的类。 

但如果情况要反过来,是右边的ClassLoader所加载的代码需要反过来去找委派链靠左边的ClassLoader去加载东西怎么办呢?没辙,parent delegation是单向的,没办法反过来从右边找左边。 

这种情况下就可以把某个位于委派链左边的ClassLoader设置为线程的context class loader,这样就给机会让代码不受parent delegation的委派方向的限制而加载到类了。

 

 

http://hllvm.group.iteye.com/group/topic/38709