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

本站公眾號
   歡迎關注本站公眾號,獲取更多信息