java的线程优先级的运行优先等级

yung7086 2012-04-27 09:45:28
我想问一下这个多线程中.优先级高的线程是不是一定比优先级低的线程先运行呢
我刚在main里面实例两个线程 一个把优先级设置到9,一个是默认
结果发现优先级高的还没循环完毕.而优先级低的就在运行了得到了w:320 w:321 m:8 w:322这样的
那优先级是不是只是让优先级高的获得更多的资源只是一个概率问题而不是绝对先运行优先级高的呢?
代码:
private int count;
public void run(){
for(int i=0;i<1000;i++)
{
count=count+1;
System.out.print(Thread.currentThread().getName()+":"+count);
}
try {
sleep(1);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

public static void main(String[] args) {
thred th=new thred();
th.setName("w");
th.setPriority(9);
thred t=new thred();
t.setName("m");
th.start();
t.start();
}

...全文
187 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yung7086 2012-05-21
  • 打赏
  • 举报
回复
谢谢了。。呵呵好久没来。结贴太迟抱歉
龙四 2012-04-27
  • 打赏
  • 举报
回复
举个例子:某jvm采用native线程,可是OS的线程优先级只有3级,那么jvm在映射优先级的时候可能将某个区间的java线程优先级映射到同一个native线程优先级上

又如,某jvm线程采用green model,其做法就太自由了
龙四 2012-04-27
  • 打赏
  • 举报
回复
这东西并不能保证什么,不同平台不同jvm的表现都可能不同
xwqfudimo 2012-04-27
  • 打赏
  • 举报
回复
额,cpu时间片轮转算法会让优先级的线程获得更多的时间片,但优先级低的也不是完全没有机会运行,所以每次运行的结果都不一样,就像你说的这是一个概率问题,个人认为是这样。

81,122

社区成员

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

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