gpt4 book ai didi

java - 在 Java 中,如何等待一个线程执行某些操作,然后再继续执行另一个线程?

转载 作者:行者123 更新时间:2023-12-02 00:33:10 24 4
gpt4 key购买 nike

我有一个名为Welcome 的图形用户界面,是使用JFormDesigner 创建的。我想等到单击该表单上的按钮后再继续我的申请。

我使用 synchronized 来执行此操作,并将 GUI 实例化为要等待的对象。

synchronized(new Welcome()) {
wait();
}

在我的 GUI 中,我有一个开始按钮,单击该按钮后将运行:

public void startScript() {
synchronized(this) {
notify();
}

// Close the GUI
dispose();
}

GUI 成功加载,但是我收到此错误:

Exception in thread "main" java.lang.IllegalMonitorStateException at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:502) at dtohh.main.Main.(Main.java:20) at dtohh.tests.Tests.main(Tests.java:11)

在我按下 GUI 上的“开始”按钮之前。当我按下按钮时,脚本结束并且不再执行任何操作。

我添加这个是为了测试它是否正常工作:

synchronized(new Welcome()) {
wait();
}

System.out.println("Test");

但是按下按钮后,应用程序退出并且不显示输出。如何等待按钮被正确按下?

最佳答案

我设法弄清楚了,我需要等待 Welcome.class 实例并在第二个线程上使用 this 进行通知。

主线程:

Welcome gui = new Welcome();
syncronized(gui) { gui.wait(); }

第二个线程:

private void onStart() {
syncronized(this) { notifyAll(); }
dispose();
}

关于java - 在 Java 中,如何等待一个线程执行某些操作,然后再继续执行另一个线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57997615/

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