对于我来说,我无法弄清楚为什么这个程序在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