2016-10-13 4 views
-2

Как добавить задержку между двумя функциями? Я хочу, чтобы одна функция выполнялась и после некоторой задержки выполнялась другая функция.Как добавить задержку между вызовами функций в java?

Например, в приведенном ниже коде, когда AI против CPU выбран Я хочу выходы быть отложено .... TimeUnit.SECONDS() задерживает весь процесс не каждый вызов функции ..

Так как я могу добавить задержку после каждого вызов функции процессора и 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); 
       } 

     } 

    }); 

EDIT: это на самом деле крестики нолики игра, в которой компьютер играет против ИИ .... так как результат будет быстро ... Я хочу, чтобы каждый шаг вызывался, и была задержка, чтобы быть видимым.

+2

try ['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

ответ

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*/ 

Важен: Как Кристофер Шнайдер упомянул, если это однопоточное приложение графический интерфейс не будет ответ, пока ваш поток спит.

+0

Как я могу заставить графический интерфейс синхронизироваться с ним? – lirus

Смежные вопросы