我正在研究线程优先级,我有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);
}
}
答案 0 :(得分:2)
在Java中,线程优先级更多地是针对JVM的建议。
换句话说:每个JVM实现自己决定如何使用这个概念。所以它不仅仅是关于Windows与Linux;还有关于Oracle JVM与OpenJDK或IBM JVM的关系;并且可能还有关于一个JVM的版本A和一些较新的版本B.
除此之外:请放心,这样一个(抱歉)天真,意味着过于简单的示例代码将不帮助您确定您的JVM是否支持优先级。
重点是:在重负荷下系统不;并且不缺资源......即使是低优先级的线程也可能以相同的速率向高优先级线程吐出println语句。
如果你对探索这些事情真的很好奇;你将不得不提出一个更复杂的例子;你的线程正在做一些真正的工作;然后你尝试添加&#34;加载&#34;到您的系统 - 然后观察高优先级线程是否可以比低优先级线程取得更多进展!