2017-03-02 25 views
1

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

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

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

但当我运行我的程序时,它显示相同的输出或混合输出作为窗口。

那么有什么办法可以在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); 
} 
} 
+0

你想通过优先化某些线程来实现什么?如果你想让代码顺序执行,你可能会重新考虑你的程序的设计。另外,提供某些硬件规格(如处理内核的数量)可能对那些回答问题的人有所帮助。 –

+0

还有一件事:您要求我们花时间帮助您。所以你请花费尽职调查,并把A)正确格式化/ indeted代码编译(你不会)B)它被称为Ubuntu;不是Ubantu。 C)另一件事不太好......提出问题;然后转身离开。 – GhostCat

+0

最后,仅仅因为我自己好奇......我只花了整整一个小时**来编写一个能够显示Linux上不同优先级的效果的例子。你猜怎么了。我失败了。也许我明天会继续,但这里真正的意义在于:正如我告诉你的那样;事情比你想象的要难得多;-) – GhostCat

回答

2

在Java中,线程的优先级更多的推荐对JVM的。

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

除此之外:请放心,这样的(对不起)天真,这意味着过于简单的示例代码而不是可以帮助您确定您的JVM是否支持优先级。

重点是:虽然在重负载下系统是而不是;并且没有资源短缺......有可能是即使是低优先级的线程也能够以相同的速度在高优先级的线程上吐出println语句。

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

相关问题