經過上回的講解,相信大家都已經對雙親委派機制有一定的了解了吧,那你們知道雙親委派機制都有哪些特性嗎?下面就聽我來介紹一下吧。
一、雙親委派機制是什麼?
首先讓我們先複習一下雙親委派機制的基本概念吧,雙親委派機制指當某一個列要加載一個特定類時,不是立刻由自己加載,而是把這個任務委托給父加載器完成,如果父加載器上還有父加載器,就再委托給爺爺,直到根類加載器,如果根類加載器加載不成功,流程就要往下傳回給拓展加載器,一直往下。這中間隻要有一個類加載器加載成功,就傳回成功。
二、雙親委派模型構成元件
1. 啟動類加載器
引導類裝入器是用本地代碼實作的類裝入器,它會負責将 /libwen下面的類庫加載到記憶體中。引導類加載器由于涉及到虛拟機本地實作細節,程式員無法直接擷取到啟動類加載器的引用,是以不允許直接通過引用進行操作。
2. 擴充類加載器
擴充類加載器是由 Sun 的 ExtClassLoader實作的。它負責将<
Java_Runtime_Home >/lib/ext 或者由系統變量 java.ext.dir
指定位置中的類庫加載到記憶體中。程式員可以直接使用标準擴充類加載器。
3. 系統類類加載器
系統類加載器是由 Sun 的
AppClassLoader(sun.misc.Launcher$AppClassLoader)實作的。它負責将系統類路徑(CLASSPATH)中指定的類庫加載到記憶體中。程式員可以直接使用系統類加載器
4. 自定義類加載器
三、雙親委派模型工作過程
當一個類加載器收到了類加載的請求,它不會先自己去加載這個類,而是會把這個請求委派給父類加載器完成。每個類加載器都會這樣,隻有當父類加載器在自己搜尋範圍内找不到指定類ClassNotFoundException時,子加載器才會嘗試自己去加載。
這就是所有内容了,有關java常見問答的更多内容請持續關注我們了解吧。
推薦閱讀: