我正在查看当前线程: 如何创建一个等待布尔变量变为真的线程?
每个人似乎都彼此不同意,没有人足够解释自己,所以我将以最简单的方式介绍这一点。这是我今天的代码。
boolean connecting = false;
public static void main(String[] args) {
initUI();
while(true) {
if(connecting) {
connecting = false;
doSomething();
}
};
}
initUI() 是一个启动用户界面的方法。当用户单击该类中名为“Connect”的按钮时,它将调用它的动作侦听器并将布尔值“connecting”设置为“true”。当它进入 if 区域时,它会将布尔值重置为“false”并运行我想要的代码。
但是,这可行……它使用了太多的CPU。
如果我直接将按钮操作侦听器设置为 doSomething() 方法,则程序会阻塞(并且应该),因为操作侦听器方法需要完成才能重置按钮。但是 doSomething() 有循环(它是一个聊天程序),因此它不会返回到原始的 while(在代码中显示),直到他断开连接。
所以我的问题是,无论如何要“等待”布尔值变为true。例如听众?
回答:感谢 Joni,我实现了一个线程。
按钮 actionListener 现在包括:
(new connectThread()).start();
我的线程看起来像这样:
public class connectThread extends Thread {
public void run() {
ui.btn.setEnabled(false);
doSomething();
ui.btn.setEnabled(true);
}
}
至于问题标题,等待布尔值改变,正如另一个人解释的那样,可以设置一个事件监听器。