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 将再次激活。
您还可以在线程一中提供超时。如果超时发生,线程一将退出等待并恢复处理。
所以我正在制作 "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 将再次激活。 您还可以在线程一中提供超时。如果超时发生,线程一将退出等待并恢复处理。