gpt4 book ai didi

Java:WAITING boolean 值改变

转载 作者:行者123 更新时间:2023-11-29 07:06:04 27 4
gpt4 key购买 nike

我正在查看当前线程: How to create a thread that waits for a boolean variable to become true?

每个人似乎都不同意对方的看法,而且没有人对自己进行充分的解释,所以我将以最简单的方式介绍这一点。这是我今天的代码。

boolean connecting = false;

public static void main(String[] args) {
initUI();
while(true) {
if(connecting) {
connecting = false;
doSomething();
}
};
}

initUI() 是一种启动用户界面的方法。当用户单击该类中名为“Connect”的按钮时,它将调用它的 Action 监听器并将 boolean 值“connecting”设置为“true”。当它进入 if 区域时,它会将 boolean 值重置为“false”并运行我想要的代码。

这可行,但是......它使用了太多的 CPU。

如果我直接将按钮 Action 监听器设置为 doSomething() 方法,程序会卡住(并且应该),因为 Action 监听器方法需要完成才能重置按钮。然而 doSomething() 有循环(它是一个聊天程序)所以它不会返回到原来的 while(在代码中显示在这里)直到他断开连接。

所以我的问题是,无论如何都要“等待” boolean 值变为真。例如听众?

回答:感谢 Joni,我实现了一个线程。

按钮 actionListener 现在包括:

(new connectThread()).start();

我的主题是这样的:

public class connectThread extends Thread {
public void run() {
ui.btn.setEnabled(false);
doSomething();
ui.btn.setEnabled(true);
}
}

至于问题标题,等待 boolean 值改变,正如另一个人解释的那样,可以设置事件监听器。

最佳答案

So my question, is there anyway to "wait" for the boolean to change to true.

你不能用一个简单的 boolean 变量来(高效且响应迅速)。 sleep/test 循环是一个糟糕的解决方案,因为它要么代价高昂,要么无响应。如果 hibernate 间隔较小,则会浪费 CPU,如果将其设置得较大,则应用程序需要(相对)较长的时间才能注意到状态变化。

但如果 boolean 是通过方法(例如 setter)更新的,那么您可以将 setter 编码为:

关于Java:WAITING boolean 值改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19591793/

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