所以我正在制作“西蒙游戏”,我需要一个java代码暂停程序0.5秒,向用户显示他需要按下的按钮。
greenButton.setBackground(Color.GREEN);
//need to stop here
press = true;
答案 0 :(得分:1)
Thread.sleep(500);
有关详细信息,请参阅this
答案 1 :(得分:1)
您可以使用Thread.sleep(500)等待0.5秒.....并在另一个线程中向用户显示按钮.....或者您可以设置一个挥发性布尔标志,当您启动时向用户显示他需要点击的按钮....并暂停所有其他线程....一旦用户点击按钮,就应该取消设置标志,并通知所有其他线程。
答案 2 :(得分:0)
由于这看起来像是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();
答案 3 :(得分:0)
您可以使用CountDownLatch API https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CountDownLatch.html
例如。在第一个线程中,创建一个计数器为1的锁存器,并将其传递给处理UI的第二个线程。然后在第一个线程中,在锁存器上调用await()。这将导致第一个线程等待计数变为零。 同时,在第二个线程中,您可以处理UI事件,在那里您可以执行latch.countDown()。一旦计数变为零,线程1将再次变为活动状态。 您还可以在第一个线程中提供超时。如果发生超时,Thread One将退出等待和恢复处理。