关于线程优先级的小问题,谢谢

清枫草塘 2008-05-20 09:30:50

class test extends Thread
{
public test (String str)
{
super(str);
}
public void run()
{
for(int i=0;i<20;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();
}
}


输出结果是不确定的,其中如下是一种:
Thread1
Thread2
Thread1
Thread2
Thread1
Thread1
Thread2
Thread2
Thread2
Thread2
Thread2
Thread2
Thread2
Thread2
Thread2
Thread2
Thread2
Thread2
Thread2
Thread2
Thread2
Thread2
Thread2
Thread2
Thread1
Thread1
Thread3
Thread3
Thread3
Thread3
Thread3
Thread3
Thread3
Thread3
Thread3
Thread3
Thread3
Thread3
Thread3
Thread3
Thread3
Thread3
Thread3
Thread3
Thread3
Thread3
Thread1
Thread1
Thread1
Thread1
Thread1
Thread1
Thread1
Thread1
Thread1
Thread1
Thread1
Thread1
Thread1
Thread1


这是个关于线程优先级的程序,为何线程不是按照优先级由高到底的顺序执行呢?
如果将线程优先级设置为相同的,那两种情况输出结果会有什么区别?
...全文
99 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
清枫草塘 2008-06-06
  • 打赏
  • 举报
回复
有完整的关于线程那一块的讲解吗?
很需要。
我是小辉辉 2008-05-20
  • 打赏
  • 举报
回复
首先要看哪个线程先启动,如果优先级低的先启动了,那么一定要先打印他的输出,然后优选级高的再发出请求.那么会中断优先级低的,去执行优先级高的.等高的执行完了再去执行低的.
如果优先级相同,那么就取决于CPU了,他会在空闲时间时执行其它线程.打印结果更是杂乱无章

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧