Java Android-线程睡眠不准确

Java Android-线程睡眠不准确,java,android,jvm,thread-sleep,Java,Android,Jvm,Thread Sleep,我尝试通过android emulator和jvm运行这段代码。 在JVM上,它的睡眠时间应该是33-34毫秒,而在android上则是68-85毫秒。 为什么这么不准确 谢谢你的帮助 package android.apps.td; 公共类逻辑实现可运行{ private long frame_time = 1000000000/30; private long offset = 0; private long timestamp = 0; public void run(){ l

我尝试通过android emulator和jvm运行这段代码。 在JVM上,它的睡眠时间应该是33-34毫秒,而在android上则是68-85毫秒。 为什么这么不准确

谢谢你的帮助

package android.apps.td;
公共类逻辑实现可运行{

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() {
}

}

因为Android不是RTOS,更不是模拟器。感谢您的快速响应,我应该使用insted执行什么?RTOS。它是一个模拟器;你想要什么?它没有运行真正的机器那么快。在真正的机器上我得到了公平的结果。感谢您的帮助如果您需要更好的模拟器,请尝试在VirtualBox或VMWare中运行计算机。它是为x86架构编译的Android操作系统,比SDK附带的仿真器快得多。