Java n秒后调用函数的延迟

Java n秒后调用函数的延迟,java,android,handler,runnable,Java,Android,Handler,Runnable,为了在n秒后调用函数,我使用下面的代码 Handler handler = new Handler(); handler.postDelayed(new Runnable() { public void run() { myFunction(); } }, n); 此代码uxcetute n次while语句为true,但在最后一次执行时有几秒钟的“延迟”(延迟、保留)。如何避

为了在n秒后调用函数,我使用下面的代码

 Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        public void run() {
        myFunction();                           
        }
    }, n);
此代码uxcetute n次while语句为true,但在最后一次执行时有几秒钟的“延迟”(延迟、保留)。如何避免这种“延误”?也许这个(以上)决定对我的任务来说不是一个好决定

完整代码在这里

public void onClick(View v){
    if (v.getId() == bn.getId()) {
        int[] j = { 1, 2 };
        Random ran = new Random();
        int randomstart = ran.nextInt(j.length);
        if (randomstart == 1) {
            new_game();
        } else {
            new_game();
            aiClick();              
        }

        return;
    }
    if (checkWin() == 2) {

        winfinishrandom();
        wins++;
        calc();
        MainActivity.this.draw_flag();


        if (wins - loses == 10) {
            wins = 0;
            loses = 0;
            draws = 0;                                      
        }
        draw_line();

    } else {
        int[] x = { 1, 2 };
        Random random = new Random();
        int randomaray = random.nextInt(x.length);
        if (randomaray == 1) {
            draw_images();
            aiClick();
        } else { 
            draw_images();
            int[] j = { 1000, 2000 };
            Random ran = new Random();
            int randomstart = ran.nextInt(j.length);
            if (randomstart == 1000) {
                // SLEEP 2 SECONDS HERE ...
                Handler handler = new Handler();
                handler.postDelayed(new Runnable() {
                    public void run() {
                        aiClick();
                    }
                }, randomstart);

            } else {
                // SLEEP 2 SECONDS HERE ...
                Handler handler = new Handler();
                handler.postDelayed(new Runnable() {
                    public void run() {
                        aiClick();
                    }
                }, randomstart);
            }
        }

    }


}

如果您想在n秒后运行一个方法,那么您不需要乱创建新线程。有一个名为
Thread.sleep(以毫秒为单位的时间)
的内置方法,其使用方式如下:

try {
    Thread.sleep(1000); // 1000 ms = 1s however long you want it
} catch (InterruptedException e) {
    e.printStackTrace(); // It can cause exception so needs to be in a try-catch statement
}
//Run the method here
someMethod();

别大拇指朝下,恐龙们,告诉我出了什么问题,我会解决的,除了vasgan eshshaklarni og'izina siktim,jalaplar