谈谈线程优先级的高低和执行顺序的关系
classtestextendsThread{publictest(Stringstr){super(str);}publicvoidrun(){for(inti=0;i...
class test extends Thread
{
public test (String str)
{
super(str);
}
public void run()
{
for(int i=0;i<10;i++){
System.out.println(getName());
}
}
}
public class ThreadTest {
public static void main(String []args)
{
test t1=new test("Thread1");
test t2=new test("Thread2");
test t3=new test("Thread3");
t1.setPriority(2);
t2.setPriority(5);
t3.setPriority(8);
t1.start();
t2.start();
t3.start();
}
}
三个线程优先级不同,但是为何不按照优先级从高到低的顺序执行(输出)?请给出几种不同结果,分析原因。
另外,假如三个线程优先级都相同,运行结果将会和上述情况有何区别?
请给出原因。 展开
{
public test (String str)
{
super(str);
}
public void run()
{
for(int i=0;i<10;i++){
System.out.println(getName());
}
}
}
public class ThreadTest {
public static void main(String []args)
{
test t1=new test("Thread1");
test t2=new test("Thread2");
test t3=new test("Thread3");
t1.setPriority(2);
t2.setPriority(5);
t3.setPriority(8);
t1.start();
t2.start();
t3.start();
}
}
三个线程优先级不同,但是为何不按照优先级从高到低的顺序执行(输出)?请给出几种不同结果,分析原因。
另外,假如三个线程优先级都相同,运行结果将会和上述情况有何区别?
请给出原因。 展开
2个回答
推荐于2017-11-26
展开全部
如果高优先级的,被堵截了,可能就不按照高低的执行了。如果低优先级的正在执行,高优衫启先级的过来要抢占执行的话,就会出现堵截,低的退不出来,高的还要进去,这是处理机制有可能随机执行,要么还可能出现,两个程序都运行不了。
三个优先级都一样的话就跟好办了,线程分或拦如配实际就是cpu为不同的运行随机分配时间片段,但优先级高的先执行,所以说应该是随衡饥机的。
三个优先级都一样的话就跟好办了,线程分或拦如配实际就是cpu为不同的运行随机分配时间片段,但优先级高的先执行,所以说应该是随衡饥机的。
2013-09-22
展开全部
线程没有优先集,扒哪随机执行。如果你想让他有优春山码先集的话,得在代码中自己控制。线唯贺程本身是随机抢占使用CPU的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询