日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文介紹了Thread.sleep()中的奇怪行為的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我注意到Thread.sleep()有一些非常奇怪的東西(這最終會使我的游戲崩潰),我不知道問題可能是什么。我已連續運行以下方法兩個小時,輸出始終為100+-5;

public void gameLoop() {
    t0 = time();
    while (GameState.getInstance().getState() == GameCondition.RUNNING) {

        engine.update();
        sfx.play();

        t1 = time();
        delta = t1 - t0;

        gfx.render((int) delta);
        t0 = time();
        System.out.println(delta);
        sleep(100);
    }
}

現在,如果我運行完全相同的方法,但不是針對常量100進行睡眠,而是針對delta

進行睡眠

public void gameLoop() {
    t0 = time();
    while (GameState.getInstance().getState() == GameCondition.RUNNING) {

        engine.update();
        sfx.play();

        t1 = time();
        delta = t1 - t0;

        gfx.render((int) delta);
        t0 = time();
        System.out.println(delta);
        sleep(delta);
    }
}

現在輸出為:

0

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

2

....
 After a minute
 571

我不知道我是太累了,犯了一個明顯的錯誤,還是發生了一些非常奇怪的事情,這是我的睡眠。

private void sleep(long milliSeconds) {
    System.out.println();
    try {
        Thread.sleep(milliSeconds);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

編輯:問題在哪里?增量正在”泄漏”,因為內部方法(在睡眠之前)幾乎不使用時間(如sleep(100)測試所證明的)我期望增量非常精確,幾乎沒有波動,但它仍在不斷增長。

推薦答案

在您的循環中,增量計算包含以前休眠的時間,然后在這個新的增量時間內休眠。如果睡眠(或您的代碼)曾經很慢(比如1ms,這是可能發生的),那么下次您的增量將增加1ms,因此您將睡眠2ms。

您的下一次迭代將至少是2ms,因為您上次只睡了2ms。如果睡眠或您的代碼再次變慢(這將發生),那么您將在下一次睡眠3ms,以此類推。您正在累積由于您的增量而可能發生的所有緩慢,包括以前的睡眠時間和其中的任何錯誤。

這篇關于Thread.sleep()中的奇怪行為的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,

分享到:
標簽:sleep Thread 奇怪
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定