基于Prority的线程?

时间:2017-03-02 08:25:38

标签: java multithreading process scjp

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

而且我知道windows不提供基于优先级的处理,所以我看不到使用基于优先级的线程程序它是如何实际工作的。

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

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

那么有没有办法在ubuntu中启用优先级,我们可以在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);
 }
}

1 个答案:

答案 0 :(得分:2)

在Java中,线程优先级更多地是针对JVM的建议

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

除此之外:请放心,这样一个(抱歉)天真,意味着过于简单的示例代码将帮助您确定您的JVM是否支持优先级。

重点是:在重负荷下系统;并且不缺资源......即使是低优先级的线程也可能以相同的速率向高优先级线程吐出println语句。

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