dgn*_*nin 6 java linux while-loop
我发现了一个用于家庭作业的Java代码的神秘问题.一个朋友在开始时编写一个应用程序:
public void run() {
vm.setVisible(true);
while(!end);
System.out.println("Finish");
vm.setVisible(false);
}
Run Code Online (Sandbox Code Playgroud)
在所有执行时以及当用户退出应用程序时,布尔'end'为false,这种情况发生:
private class CloseSys implements ActionListener {
public CloseSys() {super();}
public void actionPerformed(ActionEvent e) {
System.out.println("CLOSE SYS");
System.out.println("end: "+end);
end = true;
System.out.println("end: "+end);
}
}
Run Code Online (Sandbox Code Playgroud)
println显示像'end'的值更改为true和逻辑上在我朋友的计算机(MacOS)中完成和应用程序也是如此.
问题是在我的计算机(Ubuntu Linux)中,println也显示了值的变化,但是while没有结束(永远不会达到"Finish"println).有趣的是,如果我们把印刷品放到一边......然后才有效!