java,需要暂停程序0.5秒

java,需要暂停程序0.5秒,java,pause,Java,Pause,所以我正在制作Simon游戏,我需要一个java代码来暂停程序0.5秒,向用户显示他需要按下的按钮 greenButton.setBackground(Color.GREEN); //need to stop here press = true; 欲了解更多信息,请参见您可以使用Thread.sleep500等待0.5秒……然后在另一个线程中向用户显示按钮……或者您可以设置一个易失性布尔标志,当您向用户显示他需要单击的按钮时,该标志将被激

所以我正在制作Simon游戏,我需要一个java代码来暂停程序0.5秒,向用户显示他需要按下的按钮

  greenButton.setBackground(Color.GREEN);
             //need to stop here
             press = true;

欲了解更多信息,请参见

您可以使用Thread.sleep500等待0.5秒……然后在另一个线程中向用户显示按钮……或者您可以设置一个易失性布尔标志,当您向用户显示他需要单击的按钮时,该标志将被激活……并暂停所有其他线程……一旦用户单击该按钮,该标志将被取消设置并重新启动应通知所有其他线程。

由于这看起来是Swing,请使用暂停而不冻结程序

int delayTime = 500; // for 500 msecs
new Timer(delayTime, new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        // TODO: code to be delayed goes here

        // stop the timer from repeating
        ((Timer) e.getSource()).stop();
    }
}).start();

您可以使用CountDownLatchAPI

例如,在第一个线程中,创建一个计数器为1的闩锁,并将其传递给处理UI的第二个线程。然后在第一个线程中,调用闩锁上的wait。这将导致第一个线程等待计数变为零。 同时,在第二个线程中,您可以处理UI事件,并在那里执行latch.countDown。一旦计数变为零,线程1将再次变为活动状态。
您还可以在线程1中提供超时。如果超时发生,线程1将退出等待并恢复处理

可能的重复需要提供更多的上下文-可能是一个简短的代码示例。通常,您可以使用Thread.sleep500;,但是你提到了按钮,如果你在GUI线程上等待,它将冻结应用程序。我猜这是一个Swing程序,你尝试过线程睡眠,但发现它不起作用。如果是这样的话,用一个摆动计时器,但为什么让我们猜?是的,你是对的,我试着用它,但它不起作用。如何使用Swing Timer?查看您的最新更新…如果您设置了等待通知机制…等待500毫秒,直到用户单击按钮…单击通知等待线程继续重新开始运行,这将非常好。
int delayTime = 500; // for 500 msecs
new Timer(delayTime, new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        // TODO: code to be delayed goes here

        // stop the timer from repeating
        ((Timer) e.getSource()).stop();
    }
}).start();