动态更新类,为何行不通?

THEBEST 2010-11-07 01:47:38
public class TestReloadClass {
private static long startTime = System.currentTimeMillis();

public static Class reloadClass(Class cls) throws Exception {
String path = cls.getResource(cls.getSimpleName() + ".class").getPath();
File file = new File(path);
if (file.exists()) {
System.out.println("file:" + path);
System.out.println("start:" + startTime);
System.out.println("modif:" + file.lastModified());
if (file.lastModified() > startTime) {
System.out.println("reload new class:" + cls.getName());
return Class.forName(cls.getName());
}
}
return null;
}

/**
* @param args
*/
public static void main(String[] args) throws Exception {
Map m = new HashMap();
m.put(TestHotThread.class.getName(), TestHotThread.class);
while (true) {
Set entrys = m.entrySet();
Iterator iter = entrys.iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry)iter.next();
Class cls = (Class)(entry.getValue());
Thread t = (Thread)cls.newInstance();
t.start();
Thread.sleep(10000);
if ((cls = reloadClass(cls)) != null)
entry.setValue(cls);
}
}
}
}
public class TestHotThread extends Thread {

public void run() {
System.out.println("thread is runni..");
try {
this.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

}

}
类重新用Class.forName生成了class,重新放在map中,为什么下一次运行的还是老的class呢?
...全文
52 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
THEBEST 2010-11-07
  • 打赏
  • 举报
回复
Class.forname("test.TestClass");

会先看是否已经加载了该类,如果已经加载则返回已经加载的类,否则重新加载。
houjin_cn 2010-11-07
  • 打赏
  • 举报
回复
Class.forName工作的方式是, 如果类已经存在,则返回存在的那个类, 不存在才从文件加载, 所以你每次得到的是同一个Class;

你可以每次新建一个ClassLoader, 用新的ClassLoader去重新加载类, 这样就可以每次得到不一样的Class
标题SpringBoot与微信小程序结合的生猪养殖信息化管理系统研究AI更换标题第1章引言介绍生猪养殖信息化管理的研究背景、意义、现状及论文创新点。1.1研究背景与意义阐述生猪养殖信息化管理对提升养殖效率的重要性。1.2国内外研究现状分析国内外生猪养殖信息化管理系统的研究进展。1.3研究方法以及创新点概述SpringBoot与微信小程序结合的技术路径和创新点。第2章相关理论总结SpringBoot框架与微信小程序开发的相关理论。2.1SpringBoot框架理论介绍SpringBoot框架的特点、优势及在Web开发中的应用。2.2微信小程序开发理论阐述微信小程序的开发原理、架构及与后端服务的交互方式。2.3生猪养殖信息化管理理论概述生猪养殖信息化管理的核心概念、流程及需求。第3章系统设计详细介绍基于SpringBoot与微信小程序的生猪养殖信息化管理系统的设计方案。3.1系统架构设计系统的整体架构,包括前端、后端及数据库设计。3.2功能模块设计详细介绍系统的各个功能模块,如养殖管理、数据统计等。3.3数据库设计阐述数据库的设计思路、表结构及关系。第4章系统实现阐述基于SpringBoot与微信小程序的生猪养殖信息化管理系统的实现过程。4.1SpringBoot后端实现介绍后端服务的开发环境、技术选型及实现细节。4.2微信小程序前端实现阐述前端界面的设计、开发及与后端服务的交互。4.3系统集成与测试系统的集成过程、测试方法及结果。第5章研究结果展示系统实现后的效果,包括性能、用户反馈等方面的分析。5.1系统性能分析从响应时间、并发处理等方面分析系统的性能。5.2用户反馈分析收集并分析用户对系统的使用反馈,评估系统的实用性。5.3对比方法分析对比传统生猪养殖管理与信息化管理的差异和优势。第6章结论与展望总结研究成果,提出未来研究方向。6.1研究结论概括系统的主要功能、性能及用户
yolov5 人体姿态异常检测系统代码与完整数据集(优质项目).zip该文件内程序已通过本地测试,可直接执行。用户只需依据说明文档设置运行环境即可使用。项目复杂度适中,内容由教学辅助人员审核,适用于教学及实际应用,具备良好实用性,可放心获取。yolov5 人体姿态异常检测系统代码与完整数据集(优质项目).zip该文件内程序已通过本地测试,可直接执行。用户只需依据说明文档设置运行环境即可使用。项目复杂度适中,内容由教学辅助人员审核,适用于教学及实际应用,具备良好实用性,可放心获取。yolov5 人体姿态异常检测系统代码与完整数据集(优质项目).zip该文件内程序已通过本地测试,可直接执行。用户只需依据说明文档设置运行环境即可使用。项目复杂度适中,内容由教学辅助人员审核,适用于教学及实际应用,具备良好实用性,可放心获取。yolov5 人体姿态异常检测系统代码与完整数据集(优质项目).zip该文件内程序已通过本地测试,可直接执行。用户只需依据说明文档设置运行环境即可使用。项目复杂度适中,内容由教学辅助人员审核,适用于教学及实际应用,具备良好实用性,可放心获取。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!

62,630

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧