對於我來說,我無法弄清楚爲什麼這個程序在Java 7中不起作用。我已經在使用Java 6時沒有問題地運行它,但是隻要我用Java 7運行它, ,它不起作用。與Java不兼容7
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class HelloWorld implements ActionListener {
JButton button;
boolean state;
public HelloWorld(){
init();
state = false;
System.out.println("state - "+state);
while (true){
if (state == true){
System.out.println("Success");
}
}
}
private void init(){
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
button = new JButton("Button");
button.addActionListener(this);
frame.add(button);
frame.pack();
frame.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
JButton source = (JButton)e.getSource();
if (source == button){
state = !state;
System.out.println("state - "+state);
}
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
new HelloWorld();
}
}
使用Java 6,如果我按下按鈕,它會打印出那句「成功」,直到我再次按下按鈕。使用Java 7註冊該按鈕被按下並且狀態值已更改爲true,但從不打印短語「成功」。這是怎麼回事?
非常感謝!就是這樣。這是Java 7的一項新功能嗎?我不得不承認,我對Java的知識完全是自學的,所以我可以對許多事情無知,但我從未見過這個詞。 – user1630640
@ user1630640:否;這可能是JITter的一個變化。如果你想做多線程開發,我推薦閱讀Java Concurrency in Practice。如果沒有,你應該堅持Swing工作者線程。多線程是_hard_。 – SLaks