打破双亲委派机制之线程上下文类加载器
创作时间:
作者:
@小白创作中心
打破双亲委派机制之线程上下文类加载器
引用
CSDN
1.
https://m.blog.csdn.net/m0_68089732/article/details/137674906
线程上下文类加载器
在Java中,线程上下文类加载器(Thread Context ClassLoader)是一种特殊的类加载器,主要用于加载JDBC驱动、JNDI服务等。下面通过一个JDBC案例来说明其工作原理。
JDBC案例分析
DriverManager的使用
在JDBC中,
DriverManager用于管理项目中引入的不同数据库驱动,例如MySQL驱动和Oracle驱动。以下是使用DriverManager连接数据库的示例代码:package classloader.broken; import com.mysql.cj.jdbc.Driver; import java.sql.*; public class JDBCExample { static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver"; static final String DB_URL = "jdbc:mysql:///bank1"; static final String USER = "root"; static final String PASS = "123456"; public static void main(String[] args) { Connection conn = null; Statement stmt = null; try { conn = DriverManager.getConnection(DB_URL, USER, PASS); stmt = conn.createStatement(); String sql = "SELECT id, account_name FROM account_info"; ResultSet rs = stmt.executeQuery(sql); while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("account_name"); System.out.print("ID: " + id); System.out.print(", Name: " + name + "\n"); } rs.close(); stmt.close(); conn.close(); } catch (SQLException se) { se.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { try { if (stmt != null) stmt.close(); } catch (SQLException se2) {} try { if (conn != null) conn.close(); } catch (SQLException se) { se.printStackTrace(); } } } }类加载器分析
DriverManager类位于rt.jar包中,由启动类加载器(Bootstrap ClassLoader)加载。项目依赖中的MySQL驱动类由应用程序类加载器(Application ClassLoader)加载。
在
DriverManager类的初始化代码中,存在一个LoadInitialDrivers方法,该方法使用SPI机制加载所有实现了Driver接口的实现类。SPI机制通过在特定位置存放一个文件(文件名是接口名,内容包含实现类的类名)来定位实现类。这个过程使用了线程上下文类加载器(即应用程序类加载器)来加载类并创建对象。
双亲委派机制的讨论
关于JDBC案例是否打破了双亲委派机制,存在不同的观点:
观点一:在《深入理解Java虚拟机》一书中,作者周志明认为这种由启动类加载器加载的类,委派应用程序类加载器去加载类的方式,打破了双亲委派机制。
观点二:从类加载流程的角度分析,JDBC只是在
DriverManager加载完成后,通过初始化阶段触发了驱动类的加载。类的加载过程仍然遵循双亲委派机制。
因此,关于是否打破双亲委派机制这一问题,目前存在争议,读者可以根据自己的理解做出判断。
热门推荐
广东胜利宾馆:沙面岛上的百年传奇
走出失恋阴影,重拾爱的勇气!
沙面岛:广州近代史的“露天博物馆”
情人节浪漫晚餐攻略:让TA感动到哭!
情人节的浪漫密码:从莎士比亚到全球狂欢
香港迪士尼乐园:情人节最浪漫打卡地!
伴侣争吵后如何快速和好?
事业单位职场人:如何妥善处理与领导的矛盾?
吵架后如何快速平复情绪?6招让你秒变情绪大师!
争吵后如何快速修复关系?心理学家教你几招
从《长津湖》到抖音网红:詹姆斯·菲尔伯德的"意外人生"
一生气就头疼?女性如何缓解这种头疼
咖啡因饮料会影响止痛药效果吗?
职场人必备:布洛芬缓释颗粒使用指南
Windows 10系统WiFi功能突然消失怎么办?两种实用解决方案
如何区分代码中的数字零和大写字母O
洋葱辣眼睛怎么办?这些实用方法帮你轻松应对
春节礼仪大揭秘:如何优雅地过年?
2025 年属蛇本命年躲星的时间和技巧
赵本山范伟:那些年笑到肚子疼的春晚小品
南阳到西藏旅游攻略:自驾游路线全解析
揭秘《小巷人家》幕后花絮:闫妮&蒋欣姐妹情深!
闫妮:演艺圈的实力派,生活中的温情守护者
从《武林外传》到新作:闫妮再创收视佳绩!
《蜡笔小新:幽灵忍者珍风传》:一部集欢笑与感动于一体的30周年纪念作
《蜡笔小新:我们的恐龙日记》11.23上映,春日部防卫队迎战暴走恐龙!
《蜡笔小新:新次元!超能力大决战》制作揭秘:3DCG技术如何重塑经典动画
李子柒“回归” 传统文化之美是不变的“顶流”
湖南车牌大揭秘:你家是哪一牌?
大连元宵节活动攻略:从海洋花灯到民俗体验,总有一款适合你!