簡體   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