天天看點

Java面試官:java雙親委派機制及作用!!!

雙親委派機制是什麼東東?

雙親委派機制的第一個好處:

雙親委派機制的第二個好處:

雙親委派機制是類加載機制的工作模型,它使得類加載器有了存在優先級高低的層級結構。雙親委派機制的核心思想就是:當一個類加載器收到類加載請求時,它不會馬上自己進行加載,而是将加載請求委托給父加載器,在父加載器中也會重複這麼一個操作。隻有當父加載器無法完成加載時,自己才會嘗試進行去加載。

雙親委派機制主要有兩個好處:

1.避免類被重複加載。當父類完成加載之後,子類就不需要再加載了,直接傳回

保證同一個Class最終能被同一個類加載器加載,這有助于Java程式的穩定運作。舉個例子,比如java.lang.Object類,即使用不同的類加載器去加載它,這個加載請求最終都會委派到啟動類加載器中,是以在JVM中Object類始終隻有一個。否則的話,如果我們自定義了一個Object類,然後用不同的類加載器進行加載,那在系統中就會有多個Object類,JVM就一片混亂了。

2.雙親委派模型在Java中也能有所展現。ClassLoader類中的loadClass方法就實作這個模型。這個方法過程很簡單。首先使用synchronized設立同步區,這樣可以保證類不會被重複加載。然後當類不為空時才進行加載,加載過程首先是調用父加載器的loadClass方法,當父加載器無法加載時,才會調用目前的findClass進行位元組流的擷取。這個findClass方法在ClassLoader裡面是直接抛出了一個異常,也就是說,如果需要自定類加載器,是需要重寫該方法的。