概述
对线程有一些了解的读者知道,在线程中,我们可以通过线程的setPriority()方法来设置线程的优先级,方法的参数是一个整型值,可以填写从1~10的值。当我们创建线程的时候,java默认给线程设置的优先级是5,1为最低优先级,10为最高优先级。下面的例子创建了a,b两个线程并给它们设置了优先级:
public static void main(String[] args) {
Thread a=new Thread(new Runnable() {
@Override
public void run() {
for(int i=0;i<10;i++)
{
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("a");
}
System.out.println("a线程执行完毕");
}
});
Thread b=new Thread(new Runnable() {
@Override
public void run() {
for(int i=0;i<10;i++)
{
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("b");
}
System.out.println("b线程执行完毕");
}
});
a.setPriority(1);
b.setPriority(10);
a.start();
b.start();
}
误区
那么,我们很容易就以为,线程的优先级是线程从cpu手里抢到资源的权重,认为优先级越高的线程越容易在线程竞争中获胜,这是初学者的一个误区。
例如,刚刚上面的代码给a线程设置了最低优先级,给b线程设置了最高优先级,按照错误的想法,a线程更容易抢到资源,那么在同一时间内打印出的a字母应该比b多,可事实结果是什么呢?
多实验几次,我们会发现,优先级和线程抢到资源的概率并没有关系,而是在有多个线程的时候,用来设置一上来从哪个线程开始执行的优先级的,和之后抢夺cpu的权重并无关系。
最后
以上就是朴实方盒为你收集整理的java设置线程优先级的误区的全部内容,希望文章能够帮你解决java设置线程优先级的误区所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复