gpt4 book ai didi

Java——使用线程来启动——暂停——停止一个微型编程世界

转载 作者:行者123 更新时间:2023-12-01 19:44:25 24 4
gpt4 key购买 nike

我在正确使用线程方面仍然遇到困难。我知道如何开始一个的基本要点,但我遇到的最大问题是暂停 - 恢复和停止它们。每当我尝试停止运行主方法的模拟线程(该线程本身可能包含循环)时,我需要能够使用 GUI 中的按钮来暂停该线程。暂停和停止线程总是会导致整个 GUI 卡住,从而使其不可能。

我将 Gui Controller 连接到了模拟管理器类,该类根据给定的 class1 和 class2 创建了一个新的模拟。该管理器应该跟踪当前状态并运行模拟类中的线程(扩展线程)。

public void startProg() {
if(simulation == null){
simulation = new Simulation (class1, class2, this);
}
if(state.getState () == SimulationsStatus.PAUSE){
simulation.resumeProg (); -- Basically where i call the Simulation object to resume / start
System.out.println ("startProg-resume" );

...
}

我的模拟是这样开始的:

   public synchronized void startSimulation() {
s = new Simulation (class1,class2,simulationManager); --- Wether i assign my Simulation s to a
--- new one or the current object this is in does not change the outcome
s.start ( );
}

在该类中,我有 4 个方法,start、resume、pause 和 stop,它们应该对线程本身执行指定的操作。我不知道如何在不卡住程序本身的情况下停止当前线程。

这是该线程对象的 run 方法,如果用户在我的 gui 中以这种方式设计其代码,则 main 方法可以包含无限循环,因此暂停和停止方法应该能够暂停和停止线程即使它当前正在计算某些内容

    @Override
public synchronized void run() {
try {
class1.main ( );
} catch (Exception e) {
System.out.println (e.getStackTrace ( ));
}
}

非常感谢任何提示

目前,我正在使用观察者模式来“卡住”线程一段设定的时间,以便 class1 在屏幕上以固定速度移动

最佳答案

JVM 不支持在没有线程内部运行的代码支持的情况下停止线程以及暂停/恢复线程。

例如参见 the documentation on Thread.stop .

如果您想要运行您不知道或不信任的代码并希望控制它,请在其自己的虚拟机中运行它,最好是在虚拟机环境中。这样您就可以控制虚拟机。

关于Java——使用线程来启动——暂停——停止一个微型编程世界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59141676/

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