我想知道的是在更新我的对象在游戏中的位置时是否应该使用System.currentTimeMillis()或System.nanoTime()?它们的运动变化与自上次呼叫后经过的时间成正比,我希望尽可能精确.
我读过不同的操作系统之间存在一些严重的时间分辨率问题(即Mac/Linux的分辨率几乎为1毫秒,而Windows的分辨率为50毫秒).我主要在Windows上运行我的应用程序,50ms分辨率似乎非常不准确.
有没有比我列出的两个更好的选择?
有什么建议/意见吗?
在一个相关的问题中,我们使用ProcessBuilder探索了使用依赖于操作系统的命令以低优先级启动外部进程.我还发现,如果父进程的优先级较低,那么它生成的所有进程都将以低优先级启动.所以我的新问题是关于以低优先级启动java文件(通过双击Windows中的可执行jar运行)或在运行期间以编程方式更改其优先级.我尝试改变线程优先级,但这对Windows进程优先级没有影响.
我尝试了以下操作,但它不会更改任务管理器中的进程优先级
public class hello{
public hello(){
try{
Thread.currentThread().setPriority(1);
Thread.sleep(10000);
}catch(Exception e){e.printStackTrace();}
}
}
Run Code Online (Sandbox Code Playgroud)
我能想到的唯一另一件事是使用批处理文件运行程序,但我宁愿把它留在家里也可以这么说.那么有谁知道基于java的方式来改变当前的进程优先级?理想情况下,能够在程序运行时更改进程的优先级以响应用户输入,这将是很好的.