java - 为什么在此 java applet 教程代码中的循环中将线程优先级设置为最大?

标签 java applet thread-priority

我正在尝试学习一些基本的游戏 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/

相关文章:

android - 如何在 Android 中设置 IntentService 的优先级

java - java中如何保证一段代码不会被其他线程打断

java - 使用 Visual Studio 2017 开发/调试/编译 Java 程序

java - 通过 DOM 解析器从 XML 处理 CDATA

java - 工具提示消失后如何重新绘制?

java - 将 Java applet 参数保存到 session 或 cookie 中

java - 在不使文本变灰的情况下在 JTextField 中设置文本颜色

java - 将图像从另一个文件夹导入到 eclipse 中

java - 切换焦点后模态对话框隐藏在主框架后面

c++ - 如何将 Boost 线程池从 fifo 转换为优先级?