雙親委派機(jī)制
工作遠(yuǎn)離
雙親委派機(jī)制粘姜,其工作原理的是鬓照,如果一個(gè)類加載器收到了類加載請求,會把這個(gè)請求委托給父類的加載器去執(zhí)行孤紧,如果父類加載器還存在其父類加載器豺裆,則進(jìn)一步向上委托,依次遞歸号显,請求最終將到達(dá)頂層的啟動類加載器臭猜,如果父類加載器可以完成類加載任務(wù),就成功返回押蚤,倘若父類加載器無法完成此加載任務(wù)蔑歌,子加載器才會嘗試自己去加載,這就是雙親委派模式揽碘,即每個(gè)兒子都很懶次屠,每次有活就丟給父親去干,直到父親說這件事我也干不了時(shí)雳刺,兒子自己才想辦法去完成劫灶。
雙親委派機(jī)制的優(yōu)勢
采用雙親委派模式的是好處是Java類隨著它的類加載器一起具備了一種帶有優(yōu)先級的層次關(guān)系,通過這種層級關(guān)可以避免類的重復(fù)加載掖桦,當(dāng)父親已經(jīng)加載了該類時(shí)本昏,就沒有必要子ClassLoader再加載一次。其次是考慮到安全因素枪汪,java核心api中定義類型不會被隨意替換涌穆,假設(shè)通過網(wǎng)絡(luò)傳遞一個(gè)名為java.lang.Integer的類怔昨,通過雙親委托模式傳遞到啟動類加載器,而啟動類加載器在核心Java API發(fā)現(xiàn)這個(gè)名字的類蒲犬,發(fā)現(xiàn)該類已被加載朱监,并不會重新加載網(wǎng)絡(luò)傳遞的過來的java.lang.Integer,而直接返回已加載過的Integer.class原叮,這樣便可以防止核心API庫被隨意篡改赫编。