我是一个包含public boolean
变量的类:running
。通过按钮,我可以将running
设置为true或false。在主要类中,在main函数中我有以下内容:
重点是以这种方式编写的代码不起作用!如果我在System.out.println(frame.running);
条件之前添加if
,它就有效!你知道为什么吗?
我还尝试在类中创建一个方法,boolean isRunning()
返回一个布尔值,但它不起作用。
public static void main(String[] args) {
Gui frame = new Gui();
frame.setVisible(true);
String received = "";
while (true) {
if (frame.running == true) {
System.out.println(frame.running);
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
Thread.currentThread().interrupt();
}
ricevuti = frame.arduino.receivedstring;
if (ricevuti.isEmpty()) {
// do something
} else {
int[] intArray = null;
intArray = frame.arduino.parsing(ricevuti, " ");
System.out.println(intArray.toString());
}
}
}
}
答案 0 :(得分:3)
您需要将running
声明为volatile
。 print
可以解决这个问题,因为它也会强制JVM同步内存。
无论如何,这种繁忙的等待循环通常不是一个好主意,考虑在这里使用wait
- notify
模式。