java, 程序需要暂停 0.5 秒

java, need to pause program for 0.5 sec

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

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

有关详细信息,请参阅 this

您可以使用 Thread.sleep(500) 等待 0.5 秒.....然后在另一个线程中向用户显示按钮.....或者您可以设置一个可变的布尔标志,它当您向用户显示他需要单击的按钮时被激活....这会暂停所有其他线程....一旦用户单击该按钮,应取消设置标志并应通知所有其他线程。

因为这看起来是 Swing,所以使用 Swing Timer 暂停而不冻结程序。

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();

您可以使用 CountDownLatch API https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CountDownLatch.html

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