好的,我正在运行模拟。我在模拟的 GUI 上实现了两个 JButtons,它们是 actionListeners。我想要的是让整个模拟在我按下暂停按钮时暂停,在我按下恢复按钮时恢复。
有多个线程在运行,我试图获取每个线程并在单击暂停按钮时调用它们的 wait() 方法,但我没有成功。
因此,我需要一些关于如何执行此操作的建议。我在 GUI 中使用 Swing,监听器工作正常。我确实尝试在 View 类的当前线程上调用 sleep() 和 wait()(使用 MVC 模式)只是为了看看发生了什么,但这导致了整个应用程序崩溃。
有什么想法吗?
最佳答案
您需要为模拟线程提供额外的逻辑,以接受来自控制 (GUI) 线程的“信号”并等待下一个控制信号恢复执行。
例如,您可以在模拟线程中使用 volatile boolean isPaused
实例字段。将其设置为 true/false 以暂停/恢复模拟线程。在模拟线程中实现相应的逻辑:
public void run() {
while (true) {
simulate();
while (isPaused) {
Thread.sleep(100);
}
}
}
关于java - 如何使用 Swing 暂停 Java 模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13690339/