线程优先级问题 貌似不起作用

量化分析 2014-11-04 10:42:13

class sync_thread
{
public static void main (String argv[])
{
Runnable r=new name_test();
Thread t1=new Thread(r,"t1");
Thread t2=new Thread(r,"t2");
t1.setPriority(Thread.MAX_PRIORITY);
t2.setPriority(Thread.MIN_PRIORITY);
t2.start();
t1.start();

}

}



/*11.4
****
*/
class name_test implements Runnable {

public void run()
{
for(int i=0;i<10;i++)
{
/*
if(i==5 && Thread.currentThread().getName().equals("t1"))
{
Thread.yield();
}
*/
System.out.println("Name:"+Thread.currentThread().getName()+" i: "+i);

}
}
}


上面代码输出的不是等t1线程全部输出完了再执行t2线程,难道那个优先级只是设定谁先运行?


输出的结果:
Name:t2 i: 0
Name:t2 i: 1
Name:t1 i: 0
Name:t2 i: 2
Name:t2 i: 3
Name:t2 i: 4
Name:t2 i: 5
Name:t2 i: 6
Name:t1 i: 1
Name:t1 i: 2
Name:t2 i: 7
Name:t1 i: 3
Name:t1 i: 4
Name:t2 i: 8
Name:t2 i: 9
Name:t1 i: 5
Name:t1 i: 6
Name:t1 i: 7
Name:t1 i: 8
Name:t1 i: 9
...全文
278 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
想要执行完一个线程在执行另一个,那么只能同步,否则异步消息,你的优先级只是决定谁先执行而已
rumlee 2014-11-04
  • 打赏
  • 举报
回复
线程优先级意义不大,并不是说优先级高的一定先执行,而且这个依赖于操作系统。 如果希望某个线程优先执行,应该使用同步控制。
猎魔人-不纯 2014-11-04
  • 打赏
  • 举报
回复
优先级只是执行的概率比较大,中奖概率大也不一定能中奖
量化分析 2014-11-04
  • 打赏
  • 举报
回复
引用 2 楼 rumlee 的回复:
线程优先级意义不大,并不是说优先级高的一定先执行,而且这个依赖于操作系统。 如果希望某个线程优先执行,应该使用同步控制。
原来这样呀,谢谢了哦~~~

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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