我正在尝试学习一些基本的游戏 Java 编程。
我正在关注this tutorial here .
小程序中 run 方法的骨架代码:
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);
}
}
在此代码中,他们最初将线程优先级设置为最低。然后在循环内将其设置为最大值。
我想知道这样做的目的是什么?
最佳答案
我不知道他们为什么决定最初将优先级设置为最低。我认为这是没有意义的。
但是,将优先级设置为高于正常值(也许最大值有点夸张)确实有意义。
一般来说,如果您有一个线程重复执行一个简短的操作然后 hibernate ,那么您通常想要的是尝试最大化线程“按时启动,做它的事情,然后返回 hibernate ”的概率在每次迭代中。一般来说,将线程优先级设置为高于平均水平会增加发生这种情况的机会。在 Windows 上尤其如此,线程优先级本质上会影响线程调度程序决定“下一步运行什么”时调度的线程。
您可能想阅读我几年前在 Java thread priority 上写的一篇文章这可能有助于解释所涉及的一些问题。
关于java - 为什么在此 java applet 教程代码中的循环中将线程优先级设置为最大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10464230/