如何在java中的函数调用之间添加延迟?

时间:2016-10-13 19:50:55

标签: java delay

如何在两个功能之间添加延迟?我想要一个函数执行,并在一些延迟后执行另一个函数。

例如在以下代码中选择AI与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);
                }

        }

    });
编辑:这实际上是一个tic tac toe游戏,其中计算机对抗AI ...因此输出会很快...我希望每一步都被调用并且延迟到那里以便每一步都是可见的。

1 个答案:

答案 0 :(得分:0)

如前所述,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*/

重要提示:正如Christopher Schneider所说,如果这是一个单线程应用程序,你的gui将在你的线程处于休眠状态时不会响应。