gpt4 book ai didi

java - java线程无限循环

转载 作者:行者123 更新时间:2023-12-02 11:03:46 28 4
gpt4 key购买 nike

在方法内,我启动一个等待用户输入( Swing 按钮)的线程。只有在该输入之后,线程才能关闭并且该方法返回一个值。我的问题是等待输入的代码不是在该线程内运行,而是在其他地方运行:

String returnString = "";
Thread waitThread = new Thread(
() -> {
while (xy == null) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw THREAD_INTERRUPTED.toException();
}
}
}, "waitThread"
);

waitThread.start();

try {
waitThread.join();
} catch (InterruptedException e) {
throw THREAD_INTERRUPTED.toException();
}

// -> wait for user input -> xy != null -> waitThread ends -> main thread joins -> continue code:

returnString = xy;

return ReturnString;

为什么这是必要的?因为该方法必须返回通过单击按钮在其他地方设置的值 (xy)。

上面的代码最终陷入无限循环,不允许与 swing 组件进行任何交互。

我不是 Swing 方面的专业人士,我认为主线程是为了捕获交互事件。由于它卡在 waitThread.join(); 中,这是不可能的。对吗?

有办法重组吗?

最佳答案

为什么要重新发明轮子?有很多开箱即用的方法可以做到这一点:

public static void main(String[] args) {
String message = JOptionPane.showInputDialog("What are you gonna tell me?");
System.out.println(message);
}

JOptionPane

关于java - java线程无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51138166/

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