gpt4 book ai didi

java - eclipse 。当第二个电源读取前一个电源的静态字段时,运行两个不同的电源

转载 作者:行者123 更新时间:2023-12-01 04:31:45 24 4
gpt4 key购买 nike

我在 eclipse 中有一个 Java 项目,它分为两部分;两个不同的主类基本上运行两个不同的线程。其中一个包含加载、初始化和调试显示过程,速度相当慢。同时,另一个操作初始化的数据。为了检索第二部分中的信息,第一部分将所有引用“保存”在包含类实例的静态映射内。

是否存在一种仅运行第一部分一次,然后多次编译和运行第二部分的方法?我尝试只设置两个不同的控制台并在不同的时间按下运行按钮,但是当第二个运行时,第一个类的静态字段看起来不存在。

我现在只在第二部分工作,所以我需要多次测试和启动它。我真的很感谢您的帮助,可以节省在总是初始化同一件事上浪费的大量时间。

ps:如果我同时运行两个部分,一切都会正常。提前致谢卢卡

感谢重播(多线程,Stephen C),我试图使问题更清楚并询问如何解决它,因为我的解决方案看起来不是最好的......

编辑1:“第一部分”初始化程序,然后运行一个定期更新的简单GUI。因此,只要它出现,我们就不应该关心如何管理用户的输入和输出

编辑 2:“第二部分”读取前一个部分的信息并将字符串发送回 GUI 以进行调试。

编辑3:我对项目的形式没有具体的限制,所以如果有更好的解决方案,我可以改变结构。以及运行它的方式。

更进一步的问题 1:当项目全部一起运行时,是否有可能在 Eclipse 中只编译项目的一部分?我的意思是,如果两个线程正在运行,我可以停止一个线程,重新编译它并再次运行它,以便它可以看到从第一个线程创建的实例,该实例永远不会停止吗?基本上我需要引用内存中加载的相同静态变量(如果存在)。

更进一步的问题 2:或者更幸运的是,是否存在一种方法来存储和加载 Java 类的文件实例,从而避免从草图写入 txt 文件的映射机制?

最佳答案

您在这里问的问题并不完全清楚,但我假设您正在谈论在同一个 JVM 中运行“第一部分”和“第二部分”...

是的,这是可能的。但这并不简单。

基本上,您需要重构代码,以便用户可以从外部与某种“控制盒”进行交互。例如,这可能只是一个简单的命令循环,它从标准输入读取命令并运行它们。 (或者,您可以将应用程序转变为“服务”,通过网络套接字、RMI、HTTP 等接受请求。)

然后将其连接起来,以便有一个“命令”来运行应用程序的“第二部分”以响应用户的请求。

这是基础知识。您要做的另一件事是编译并运行第二部分[多次]”。这意味着您需要设置“控制盒”,以便在修改并重新编译“第二部分”后,它可以加载“第二部分”代码的新副本。为此,您需要创建一个新的 ClassLoader 对象(每次)并使用它来加载构成“第二部分”的类。这是可能的,但有点棘手。您需要解决的问题包括:

  • 将“第一部分”和“第二部分”拆分为单独的 JAR 文件(或目录树)。 “第一部分”需要是独立的......不依赖于“第二部分”中的类。

  • 确保“第一部分”数据结构没有运行时引用“第二部分”中的对象/枚举实例。

如果您没有正确执行上述操作,您可能会遇到“permgen”存储泄漏和神秘的类型转换错误。

<小时/>

总而言之,要完成这项工作还有很多工作要做。除非您已经了解所涉及的所有技术,否则我怀疑它是否会节省您的总体时间。更好的想法可能是弄清楚如何加速“第一部分”的初始化;例如通过进行延迟初始化,或使用一些快速/轻量级持久性机制缓存数据结构。

关于java - eclipse 。当第二个电源读取前一个电源的静态字段时,运行两个不同的电源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17903404/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com