雙親委派模型

從JAVA虛擬機的角度來說,只有兩種類型的類加載器:啓動類加載器,由C++實現,是虛擬機自身的一部分;全部其餘的類加載器,由java語言實現,獨立於虛擬機外部,而且所有繼承自java.lang.ClassLoader。java

從java開發人員的角度來看,通常是由三種類加載器線程

BootStrap ClassLoader設計

Exetension ClassLoader繼承

Application ClassLoader開發

這裏列加載器之間的父子關係通常不是繼承關係,而是以組合關係來複用父加載器的代碼。虛擬機

 

破壞雙親委派模型io

第一次被破壞發生在雙親委派模型出現以前,對已經存在的用戶自定義類加載器的實現代碼,java設計者引入雙親委派時不得不作出一些妥協。在java.lang.ClassLoader添加了一個新的protected findClass()方法,去重寫loadClass()方法。基礎

第二次是由自身的缺陷所致使的,雙親委派很好地解決了各個類加載器的基礎類的同一問題,可是若是出現基礎類又要調用回用戶的代碼時就要破壞該模型。引入了線程上下文類加載器。程序

第三次是因爲用戶對程序動態性的追求而致使的。方法

相關文章
相關標籤/搜索