我發現了一個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