System.nanotime()的负值

时间:2015-02-12 23:27:11

标签: java loops

任何人都可以帮我解决问题吗?在游戏刷新和重绘的游戏循环中,有时变量“wait”返回负值。怎么可能?

while(running) {
        start = System.nanoTime();

        update();
        draw();
        drawToScreen();

        elapsed = System.nanoTime() - start;
        wait = targetTime - (elapsed / 1000000);

        try {
            System.out.println(wait);
            Thread.sleep(wait);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

2 个答案:

答案 0 :(得分:0)

elapsed = System.nanoTime() - start;
wait = targetTime - (elapsed / 1000000);
  1. wait不是System.nanotime()的值;等待消极只是意味着targetTime - (elapsed / 1000000)是否定的
  2. nano = 10亿thth= 1/1000000000所以如果targetTime以秒为单位你可能不希望1000000

答案 1 :(得分:0)

经过的时间可能大于刷新间隔(targetTime)。在这种情况下,检查经过的时间是否为+ ve,然后仅休眠。