如何在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 ....所以作为输出的速度可能很快...我希望每一步都被调用,并延迟到那里,以便每个步骤都可见。

+2

尝试['java.lang.Thread.sleep(long millis)'](https://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#sleep(long) )。 – DimaSan

+0

也没有工作 – lirus

+2

可能重复的[如何延迟在Java?](http://stackoverflow.com/questions/24104313/how-to-delay-in-java) – MordechayS

正如前面提到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