Android - 不准确的线程睡眠

时间:2011-12-21 13:39:29

标签: java android jvm thread-sleep

我尝试通过android模拟器和jvm运行此代码。 在JVM上它应该睡33-34毫秒,但在Android上它是68-85毫秒。 为什么这么不准确?

感谢您的帮助。

package android.apps.td;

public class Logic实现了Runnable {

private long frame_time = 1000000000/30;
private long offset = 0;
private long timestamp = 0;

public void run(){
    long step;
    while(true){
        step = System.nanoTime();
        if((offset = (step - timestamp)) > frame_time){
            System.out.println("FRAME     "+(step - timestamp)/1000000+" ms");
            timestamp = step;
            update();
            render();
            repaint();
            try {
                Thread.sleep(frame_time/1000000+1);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }else{
            try {
                System.out.println("Sleep ["+((frame_time-offset)/1000000+1)+" ms]");

                Thread.sleep(((frame_time-offset)/1000000+1));
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

private void update() {
}

private void render() {
}

private void repaint() {
}

}

0 个答案:

没有答案