0

我正在尝试学习一些基本的游戏 Java 编程。

我在这里学习本教程

他们在小程序中运行方法的骨架代码:

public void run () 
{
    // lower ThreadPriority 
    Thread.currentThread().setPriority(Thread.MIN_PRIORITY); 

    // run a long while (true) this means in our case "always" 
    while (true) 
    {
        // repaint the applet 
        repaint(); 

        try 
        {
            // Stop thread for 20 milliseconds 
            Thread.sleep (20); 
        } 
        catch (InterruptedException ex) 
        {
            // do nothing 
        } 

        // set ThreadPriority to maximum value 
        Thread.currentThread().setPriority(Thread.MAX_PRIORITY); 
    }
}

在这段代码中,他们最初将线程优先级设置为最低。然后在循环内部,他们将其设置为最大值。

我想知道这样做的目的是什么?

4

1 回答 1

2

我不知道他们为什么最初决定将优先级设置为最低。我认为这是没有意义的。

但是,将优先级设置为高于正常值(也许最大值是夸张的)确实有意义。

一般来说,如果你有一个线程重复执行一个短动作然后休眠,你通常想要的是尝试最大化线程在每次迭代中“按时启动,做它的事情,然后回到休眠”的概率. 一般来说,将线程优先级设置为高于平均水平会增加发生这种情况的机会。在 Windows 上尤其如此,其中线程优先级本质上会影响在线程调度程序决定“下一步运行什么”时调度的线程。

您可能想通读我几年前写的一篇关于Java 线程优先级的文章,它可能有助于解释所涉及的一些问题。

于 2012-05-05T17:31:43.583 回答