如何在java中的函数调用之间添加延迟?
问题描述:
如何在两个函数之间添加延迟?我想要一个函数来执行,并在一些延迟之后执行另一个函数。如何在java中的函数调用之间添加延迟?
例如在当AI VS CPU选择欲被延迟的输出下面的代码.... TimeUnit.SECONDS()
延迟整个过程不每个函数调用..
因此,如何能予每个后添加延迟下面的代码CPU和AI的函数调用:
public void actionPerformed(ActionEvent e) {
option = 3;
ai.setBackground(Color.WHITE);
int q = (int) (Math.random() * 2);
//System.out.println(" I have been called " + q);
if (q == 1) {
System.out.println(" I am inside " + q);
text1.setText(" AI starts ");
AI(1);
CPU(0);
AI(1);
CPU(0);
AI(1);
CPU(0);
AI(1);
CPU(0);
} else {
// System.out.println(" I have been inside " + q);
text1.setText(" CPU starts ");
CPU(1);
AI(0);
CPU(1);
AI(0);
CPU(1);
AI(0);
CPU(1);
AI(0);
}
}
});
编辑:这其实是一个井字游戏中电脑扮演对抗AI ....所以作为输出的速度可能很快...我希望每一步都被调用,并延迟到那里,以便每个步骤都可见。
答
正如前面提到Thread.sleep
是要走的路。您可以创建这样一个简单的方法:
public void sleep(long millis){
try {
Thread.sleep(millis);
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
}
的调用它,只要你想要一些延迟。如果你想每一步之间的延迟,你必须把它的每一步之间:
CPU(1);
sleep(300);
AI(0);
sleep(300);
/*And so on*/
重要提示:克里斯托弗·施耐德提到的,如果这是你的GUI不会响应,而你的线程处于休眠状态单线程应用程序。
+0
我如何使GUI与它同步? – lirus
尝试['java.lang.Thread.sleep(long millis)'](https://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#sleep(long) )。 – DimaSan
也没有工作 – lirus
可能重复的[如何延迟在Java?](http://stackoverflow.com/questions/24104313/how-to-delay-in-java) – MordechayS