【发布时间】:2012-02-24 18:18:59
【问题描述】:
我试图让我的程序在按下 gui 上的按钮时跳出 while 循环。
我有一个线程启动 GUI 线程并等待直到按下应用按钮。 代码如下:
public void run() {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
// Wait until apply button clicked and set team
while(true) {
applyClicked = gui.getApplyClicked();
if (applyClicked == true) {
teamYellow = gui.getTeam();
break;
}
}
但是,即使我单击应用并且在 GUI 中 applyClicked 变为真,它也不会执行该 if 语句。
但是,如果我在 while true 下方添加一个打印行,它可以正常工作。
我还逐行调试它,变量设置正确,它可以工作。
当我没有 println 时,为什么这不起作用?跟线程有关系吗?
谢谢
【问题讨论】:
-
volatile? (另外,忙等待循环,不好!) -
volatile 工作。在没有繁忙的等待循环的情况下,我如何从 gui 获取包含该循环的类的布尔值?