基于优先级的线程?

Prority based threads?

我正在研究线程优先级,我有 windows 10 和 Ubuntu 16.0 lts 操作系统。

而且我了解到 windows 不提供基于优先级的处理,因此我看不到基于优先级的线程程序的实际工作原理。

所以我 运行 我在 ubuntu 中的基于优先级的程序,因为有人告诉我 ubuntu 提供基于优先级的进程。

但是当我 运行 我的程序显示与 windows 相同的输出或混合输出时。

那么有什么方法可以在 ubuntu 中启用优先级,我们可以在 windows 中启用优先级但是为此我应该有真正的 windows 但我没有。

class MyThread extends Threads {
  public void run() {
    for(int i=0;i<20;i++)
      System.out.println(Thread.currentThread().getName()+""+i);
    }
   }

class TestThread {
  public static void main(String[] arg){
  Thread.currentThread().setPriority(1);
  MyThread t1=new MyThread();
  t1.setPriority(10);
  t1.start();
  for(int i=0;i<20;i++) 
   system.out.println(Thread.currentThread().getName()+""+i);
 }
}

在Java中,线程优先级更像是对JVM的推荐

换句话说:每个 JVM 实现自行决定如何使用此概念。所以这不仅仅是关于 Windows 与 Linux;还有关于 Oracle JVM 与 OpenJDK 或 IBM JVM 的对比;并且可能还关于一个 JVM 的版本 A 和它的一些更新版本 B。

除此之外:请放心,这样(抱歉)天真,意思是过于简单的示例代码片段 不会 帮助您判断您的 JVM 是否支持优先级。

重点是:当系统处于重负载状态时;并且不存在资源短缺......即使是低优先级线程也有可能以与高优先级线程相同的速率吐出 println 语句。

如果你真的对探索这些东西感到好奇;你将不得不提出一个更复杂的例子;你的线程在哪里做一些真正的工作;然后您尝试将 "load" 添加到您的系统 - 然后观察高优先级线程是否可以比低优先级线程取得更多进展!