1.双亲委派机制
在Java中,类加载器具有层次结构。每个Java实现的类加载器中保存了一个成员变量叫“父”类加载器(parent),可以理解为上级,并不是继承关系。应用程序类加载器的parent父加载器是扩展类加载器,而扩展类加载器的parent是空。但是在代码逻辑上,扩展类加载器依然会把启动类加载器当成父类加载器。启动类加载器使用C++编写,没有父类加载器当一个类加载器接收到加载类的任务时,会自底向上查找是否加载过,再由顶向下进行加载(向下委派加载起到了一个加载优先级的作用)。核心是解决一个类到底由谁加载的问题
2.双亲委派机制的作用
作用 | 说明 |
---|---|
保证类加载的安全性 | 通过双亲委派机制避免而已代码替换JDK中的核心类库,确保核心类库的完整性和安全性 |
避免重复加载 | 确保双亲委派机制可以避免同一个类被多次加载 |
(2)避免重复加载
确保双亲委派机制可以避免同一个类被多次加载
3.Java中使用代码的方式主动加载一个类
(1)使用Calss.forName()方法,使用当前类的类加载器去加载指定的类
(2)获取到类加载器,通过类加载器的loadClass方法指定某个类加载器加载