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();
}

...全文
108 点赞 收藏 4
写回复
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时间片轮转算法会让优先级的线程获得更多的时间片,但优先级低的也不是完全没有机会运行,所以每次运行的结果都不一样,就像你说的这是一个概率问题,个人认为是这样。
回复 点赞
发动态
发帖子
Web 开发
创建于2007-09-28

5.2w+

社区成员

34.1w+

社区内容

Java Web 开发
社区公告
暂无公告