簡體   English   中英

如何限制CPU使用率?

[英]How can I limit the CPU usage?

如何使用此代碼為Java游戲限制CPU使用率? 我認為一種方法可能是使用Thread.sleep()Thread.sleep()是我可以計算時間或類似的時間。 有人可以幫幫我嗎?

public void run(){
    this.requestFocus();
    long lastTime = System.nanoTime();
    double amountOfTicks = 60.0;
    double ns = 1000000000 / amountOfTicks;
    double delta = 0;
    long timer = System.currentTimeMillis();
    int frames = 0;
    while(isRunning){
        long now = System.nanoTime();
        delta += (now - lastTime) / ns;
        lastTime = now;
        while(delta >= 1){
            tick();
            delta--;
        }
        render();
        frames++;

        if(System.currentTimeMillis() - timer > 1000){
            timer += 1000;
            frames = 0;
        }
    }
    stop();     
}

除了缺少部分之外,這看起來非常簡單。 考慮您要以某個固定速率進行更新。

while(isRunning){


    tick();
    render();
    long now = System.nanoTime();
    double delta = now - lastTime;
    double remaining = delta - ns;
    if(remaining>1000){
        try{
             Thread.sleep((int)(remaining/1000));
        } catch(InterruptedException e){
             throw new RuntimeException(e);
        }
    }

    frames++;
    lastTime = System.nanoTime();
    if(System.currentTimeMillis() - timer > 1000){
        timer += 1000;
        frames = 0;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM