日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

双亲委派机制_面试官:双亲委派机制的原理和作用是什么?

發布時間:2023/12/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 双亲委派机制_面试官:双亲委派机制的原理和作用是什么? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

說到雙親委派機制,就必須要先要弄清楚Java的類加載器

什么是類加載器

Java類加載器(ClassLoader)是Java運行時環境(JRE)的一部分,負責動態的將Java類加載到Java虛擬機的內存空間。

類加載器有哪些

主要有三個:

  • 引導類加載器(Bootstrap ClassLoader):加載Java的核心庫(jre/lib/rt.jar),同時加載另外兩種類加載器,由C++編寫;
  • 擴展類加載器(Extensions ClassLoader):加載Java的擴展庫(jre/ext/*.jar);
  • 應用類加載器(Application ClassLoader):它根據 Java 應用的類路徑(CLASSPATH)來加載 Java 類。一般來說,Java 應用的類都是由它來完成加載的。
  • 除了上面三種外,我們還可以自定義類加載器,以方便我們的開發。

    類加載器之間的關系

    代碼示例

    上述代碼的輸出結果為:

    結果輸出

    通過這段代碼可以看出,我們日常編寫的代碼,是通過Application ClassLoader加載的,其父類是Extensions ClassLoader。實際上,Bootstrap ClassLoader也是Extensions ClassLoader的父類,但是因為Bootstrap ClassLoader是由C++編寫的,在Java中無法獲取,所以對外顯示為null。

    雙親委派機制

    好了,上面做了那么多鋪墊,終于來到了今天的重頭戲:雙親委派機制!

    雙親委派機制指的是,當某個特定的類加載器在收到類加載的請求時,會遵循下面的規則順序:

  • 首先判斷被加載的類是否已經加載過,如果是則結束,否則會將加載任務委托給自己的父親;
  • 父類加載器在收到類加載的請求時,也會先判斷被加載的類是否已經加載過,如果是則結束,否則同樣將加載任務委托給自己的父親
  • 不斷的循環進行步驟2,直到將加載任務委托給Bootstrap ClassLoader為止。此時,Bootstrap ClassLoader會先判斷被加載的類是否已經加載過,如果是則結束;
  • 請注意,到這里為止,都只是在轉移加載任務的請求,下面將會進行類加載。

  • Bootstrap ClassLoader會判斷能否完成加載任務,如果能則直接加載,否則會將加載任務交給兒子類加載器;
  • 兒子類加載器也會判斷能否完成加載任務,如果能則直接加載,否則會再一次將加載任務交給兒子類加載器;
  • 不斷的循環進行步驟5,直到最后一個類加載器,如果這個類加載器仍然不能夠加載這個類,就會拋出一個異常:ClassNotFoundException。
  • 雙親委派機制下的類加載過程

    雙親委派機制的好處是什么

  • 首先,保證了java核心庫的安全性。如果你也寫了一個java.lang.String類,那么JVM只會按照上面的順序加載jdk自帶的String類,而不是你寫的String類。
  • 其次,還能保證同一個類不會被加載多次。
  • 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的双亲委派机制_面试官:双亲委派机制的原理和作用是什么?的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。