我发现了一个Java代码用于作业的神秘问题。一个朋友程序的应用程序,这个开头:Java在Linux中运行时没有中断一段时间
public void run() {
vm.setVisible(true);
while(!end);
System.out.println("Finish");
vm.setVisible(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);
}
}
println的节目,如在我的朋友的电脑(MacOS)中完成和应用程序的'end'值变为真实和逻辑。
问题是,在我的电脑(Ubuntu Linux)中,println也显示值变化,但while不会结束(“Finish”println永远不会到达)。有趣的是,如果我们把印刷品放在一边......然后工作!
请注意,您不应该在AWT事件派发线程(EDT)中使用Swing(或在实践中使用AWT)。 – 2010-12-19 15:27:54