java什么是双亲委派,为什么它可以保证安全?
分类专栏:
java
</div>
</div>
<div class="up-time"><span>最后发布:2019-10-23 18:07:10</span><span>首发:2019-10-23 17:59:40</span></div>
<div class="slide-content-box">
<div class="all-tags-box">
</div>
<div class="article-copyright">
<div class="creativecommons">
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"></a>
</div>
<div class="creativecommons">
版权声明:本文为博主原创文章,遵循<a href="http://creativecommons.org/licenses/by-sa/4.0/" target="_blank" rel="noopener"> CC 4.0 BY-SA </a>版权协议,转载请附上原文出处链接和本声明。 </div>
<div class="article-source-link">
本文链接:<a href="https://blog.csdn.net/qq_34093116/article/details/102707748">https://blog.csdn.net/qq_34093116/article/details/102707748</a>
</div>
</div>
</div>
<div class="operating">
<a class="href-article-edit slide-toggle">版权</a>
</div>
</div>
</div>
</div>
<!--python安装手册结束-->
<article class="baidu_pl">
<div id="article_content" class="article_content clearfix">
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-211130ba7a.css"><style class="darkreader darkreader--cors" media="screen">.htmledit_views address,.htmledit_views cite,.htmledit_views dfn,.htmledit_views em,.htmledit_views i,.htmledit_views span[lang],.htmledit_views var{font-style:italic}.htmledit_views{font-family:-apple-system,SF UI Text,Arial,PingFang SC,Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,sans-serif,SimHei,SimSun}.cke_editable{margin:24px;word-wrap:break-word}.htmledit_views img.right{border:1px solid #ccc;float:right;margin-left:15px;padding:5px}.htmledit_views img.left{border:1px solid #ccc;float:left;margin-right:15px;padding:5px}.htmledit_views .marker{background-color:#ff0}.htmledit_views figure{text-align:center;margin:0 24px;display:inline-block}.htmledit_views figure>figcaption{text-align:center;margin:8px;color:#999;font-size:14px;display:block}.htmledit_views a>img{padding:1px;margin:1px;border:none;outline:#0782c1 solid 1px}.htmledit_views .code-featured{border:5px solid red}.htmledit_views .math-featured{padding:20px;box-shadow:0 0 2px rgba(200,0,0,1);background-color:rgba(255,0,0,.05);margin:10px}.htmledit_views .image-clean{border:0;background:0 0;padding:0}.htmledit_views .image-clean>figcaption{font-size:.9em;text-align:right}.htmledit_views .image-grayscale{background-color:#fff;color:#666}.htmledit_views .image-grayscale img,.htmledit_views img.image-grayscale{filter:grayscale(100%)}.htmledit_views .embed-240p{max-width:426px;max-height:240px;margin:0 auto}.htmledit_views .embed-360p{max-width:640px;max-height:360px;margin:0 auto}.htmledit_views .embed-480p{max-width:854px;max-height:480px;margin:0 auto}.htmledit_views .embed-720p{max-width:1280px;max-height:720px;margin:0 auto}.htmledit_views .embed-1080p{max-width:1920px;max-height:1080px;margin:0 auto}.htmledit_views p{font-size:16px;color:#4d4d4d;font-weight:400;line-height:26px;margin:0 0 16px;overflow-x:auto}p[align=center]{text-align:center}.htmledit_views img{max-width:100%;height:auto}.htmledit_views strong,.htmledit_views strong span{font-weight:700}.htmledit_views *{box-sizing:border-box}.htmledit_views h1,.htmledit_views h2,.htmledit_views h3,.htmledit_views h4,.htmledit_views h5,.htmledit_views h6{color:#4f4f4f;margin:8px 0 16px;font-weight:700}.htmledit_views ol,.htmledit_views ul{margin:0 0 24px;padding:0;font-size:16px}.htmledit_views ul ol{margin:0 0 24px 32px}.htmledit_views ul li{list-style-type:disc;margin:8px 0 0 32px}.htmledit_views ol li{list-style-type:decimal;margin-left:40px;margin-top:8px}.htmledit_views h1{font-size:28px;line-height:36px}.htmledit_views h2{font-size:24px;line-height:32px}.htmledit_views h3{font-size:22px;line-height:30px}.htmledit_views h4{font-size:20px;line-height:28px}.htmledit_views h5{font-size:18px;line-height:26px}.htmledit_views h6{font-size:16px;line-height:24px}.htmledit_views blockquote{display:block;padding:16px 16px 0;margin:0 0 24px;border-left:8px solid #dddfe4;background:#eef0f4;overflow:auto;overflow-scrolling:touch;word-wrap:normal;word-break:normal}.htmledit_views blockquote ol,.htmledit_views blockquote ul{margin-bottom:16px;padding:0;font-size:16px;line-height:24px}.htmledit_views blockquote ol li,.htmledit_views blockquote ul li{margin-bottom:0}.htmledit_views blockquote p{font-size:16px;line-height:26px;font-weight:400;margin-bottom:16px;color:#4f4f4f}.htmledit_views hr{margin:24px 0;border:none;border-bottom:solid #ccc 1px}.htmledit_views table tr{border:0;border-top:1px solid #ddd;background-color:#fff}.htmledit_views table{border-collapse:collapse;display:table;width:100%;text-align:left;margin-bottom:24px;margin-left:auto;margin-right:auto}.htmledit_views tbody{border:0}.htmledit_views table tr:nth-child(2n){background-color:#f7f7f7}.htmledit_views table tr td,.htmledit_views table tr th{border:1px solid #ddd;font-size:14px;color:#4f4f4f;line-height:22px;padding:8px;text-align:left}.htmledit_views table tr td p,.htmledit_views table tr th p{font-size:14px;color:#4f4f4f;margin:0;padding:0;text-align:left;line-height:22px}.htmledit_views table tr th p{font-weight:700}.htmledit_views table tr td code,.htmledit_views table tr th code{white-space:normal;word-break:break-word}.htmledit_views table tr th{font-weight:700;background-color:#eff3f5}.htmledit_views dl{margin:24px}.htmledit_views dl dt{margin:8px;font-weight:700}.htmledit_views dl dt dd{margin:8px}.htmledit_views abbr[data-original-title],.htmledit_views abbr[title]{cursor:help;border-bottom:1px dotted #999}.htmledit_views .initialism{font-size:90%;text-transform:uppercase}.htmledit_views pre{white-space:pre-wrap;word-wrap:break-word;margin:0 0 24px;overflow-x:auto;padding:8px}.marker{background-color:#ff0}htmledit_views img.mathcode{margin:0 8px}.htmledit_views kbd,.htmledit_views pre,.htmledit_views samp{font-family:Consolas,Inconsolata,Courier,monospace;font-size:14px;line-height:22px;color:#000}.htmledit_views code ol li div.hljs-ln-code,.htmledit_views code ol li div.hljs-ln-numbers,.htmledit_views pre code,.htmledit_views pre code div,.htmledit_views pre code span{font-family:"Source Code Pro","DejaVu Sans Mono","Ubuntu Mono","Anonymous Pro","Droid Sans Mono",Menlo,Monaco,Consolas,Inconsolata,Courier,monospace,"PingFang SC","Microsoft YaHei",sans-serif}.htmledit_views code{border-radius:4px}.htmledit_views a{color:#4ea1db;text-decoration:none}.htmledit_views a:focus,.htmledit_views a:hover{color:#ca0c16}.htmledit_views a:visited{color:#6795b5}.htmledit_views .hot-keyword:visited{color:#3399ea}.htmledit_views .footnote{vertical-align:top;position:relative;top:-4px;font-size:12px}.htmledit_views .flow-chart,.htmledit_views .sequence-diagram{text-align:center;margin-bottom:24px;font-size:14px!important}.htmledit_views .flow-chart [fill="#000"],.htmledit_views .flow-chart [fill="#000000"],.htmledit_views .flow-chart [fill=black],.htmledit_views .sequence-diagram [fill="#000"],.htmledit_views .sequence-diagram [fill="#000000"],.htmledit_views .sequence-diagram [fill=black]{fill:#4f4f4f}.htmledit_views .flow-chart [stroke="#000000"],.htmledit_views .sequence-diagram [stroke="#000000"]{stroke:#4f4f4f}.htmledit_views .MathJax_SVG_Display{text-align:center;margin:24px 0;font-size:18px;font-weight:400;color:#4f4f4f;position:relative;text-indent:0;max-width:none;max-height:none;min-width:0;min-height:0;width:100%}.htmledit_views pre code{display:block;line-height:22px;overflow-x:auto;white-space:pre;word-wrap:normal;border-radius:4px;padding:8px}.htmledit_views pre code code.hljs{padding:0}.htmledit_views pre code:not(.hljs){background-color:#f3f4f5}.htmledit_views pre code,.htmledit_views pre code div,.htmledit_views pre code span{font-size:14px}.htmledit_views .prettyprint,.htmledit_views pre.prettyprint{margin:0 0 24px;padding:8px 16px 4px 56px;background-color:#f6f8fa;border:none}.htmledit_views .prettyprint .pre-numbering{position:absolute;width:48px;background-color:#eef0f4;top:0;left:0;margin:0;padding:8px 0;list-style:none;text-align:right}.htmledit_views .pre-numbering li{padding:0 8px;list-style:none;margin:0}.htmledit_views dl dd{margin:0 0 8px 40px}.htmledit_views kbd{padding:2px 8px;border:1px solid rgba(63,63,63,.25);box-shadow:0 1px 0 rgba(63,63,63,.25);background-color:#fff;color:#333;border-radius:4px;display:inline-block;margin:0 2px;white-space:nowrap}.htmledit_views .dp-highlighter{font-size:12px;text-align:left;margin:0 0 24px}.htmledit_views code ol{margin:0;overflow:hidden}.htmledit_views code ol li{list-style-type:none;margin-left:0;margin-top:0;height:22px}.htmledit_views code ol li div.hljs-ln-code{margin-left:8px}.htmledit_views code ol li div.hljs-ln-code,.htmledit_views code ol li div.hljs-ln-numbers{float:left;height:22px}.htmledit_views code ol li div.hljs-ln-numbers{width:24px;border-right:1px solid #c5c5c5}.htmledit_views code ol li div.hljs-ln-numbers .hljs-ln-line{word-wrap:normal}.htmledit_views code ol.hundred li div.hljs-ln-numbers{width:30px}.htmledit_views code ol.thousand li div.hljs-ln-numbers{width:36px}.htmledit_views .csdn-data-video{width:200px}.htmledit_views .csdn-data-video img{margin:0;display:block;width:200px;height:112px}.htmledit_views .csdn-data-video p{margin-top:10px;margin-bottom:0;font-size:14px}.htmledit_views pre[data-from=code-for-outside]{overflow:hidden}.htmledit_views pre[data-from=code-for-outside] code{overflow-x:auto;overflow-y:hidden}.htmledit_views pre[data-from=code-for-outside] code *{overflow:visible;overflow-wrap:break-word}.htmledit_views pre[data-from=code-for-outside] p code{padding:0}</style><style class="darkreader darkreader--sync" media="screen"></style>
<div class="htmledit_views" id="content_views">
<p>首先上一张网图:</p>
双亲委派是:简单来说,当一个类被类加载器加载的时候,它会先判断自己的父级能不能能够加载该class文件,它父级拿到之后也会同样的先判断自己的父级是否可以加载,直到到达顶级的启动类加载器,如果在这个过程中父级可以加载就父级加载,如果到最后父级们都不能加载自己也不能加载,就会抛出异常。
为什么是安全的?
首先我们定义一个类
public class String{
public String(){
//干一些坏事儿
}
}
如果没有双亲委派机制的存在,如果存在String类的初始化动作,这个坏事儿是不是就干成了,而现在双亲委派之后BootStrapClassLoad这个父级是可以加载String这个类的,而加载的正是jvm的lib下的原生String类,所以这个干坏事儿的String永远都不会被使用。所以说在一定程度上讲能保证安全。