繁体   English   中英

我应该使用Thread.sleep对其他程序好吗?

[英]Should I use Thread.sleep to be nice to other programs?

我通常使用主要的'while'循环在Java中编写(小)游戏,有点像这样:

while(running) {
    time = getTime();
    if(time - oldTime > 0.01) {
        tick(time - oldTime);
        oldTime = getTime();
    } 
}

我这样做是为了让程序每秒有最大帧数,但我听说Thread.sleep允许其他线程执行。 我应该添加Thread.sleep(1)(或其他一些低毫秒)以允许计算机上的其他线程? 这更像是一个良好的编程实践而不是性能的问题,并不是真的有必要,但我喜欢制作可靠和不合适的程序。

不,你不需要这样做。

所有现代抢占式多任务系统都会将时间分配给其他线程以允许它们执行。 你不需要sleep()来容纳这个,除非你想在一段时间内强制放弃对其他线程的控制。

您可能想要这样做的唯一时间是,如果您正在占用多核系统上的所有核心,并且您希望在后台安静地完成长时间运行的计算密集型任务,而不会明显影响正在发生的其他操作同时。

我已经成功构建了使用Timer更新图形的游戏。 阅读这里的好处。 一般来说, 罗伯特是正确的,你不需要这样做。 我发现通常归结为在游戏动画FPS方面找到一个甜蜜点,而不是对其他过程很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM