java多线程 修改优先级_JAVA多线程优先级如何运行。

代码如下。publicclassThreadTest{publicstaticvoidmain(String[]args){Thread11a=newThread11();Thread22b=newThread22();a.setPriority(10);b.setPriority(8);a.start();b.start();...

代码如下。

public class ThreadTest {

public static void main(String[] args) {

Thread11 a = new Thread11();

Thread22 b = new Thread22();

a.setPriority(10);

b.setPriority(8);

a.start();

b.start();

System.out.println("main");

}

}

class Thread11 extends Thread{

public void run(){

for (int i = 0; i < 1000; i++) {

System.out.println(1);

}

}

}

class Thread22 extends Thread{

public void run(){

for (int i = 0; i < 1000; i++) {

System.out.println(2);

}

}

}

我自己的理解是,虽然设置了优先级为10和8,只是抢占CPU资源的时候,获得的几率稍微大一点而已。

然后输出结果可能是随意乱输出的,虽然他们优先级不一样。

但是刘中兵的java书这样写道:

他说到,在任何时刻,都是优先级高的先执行,这样输出结果必定是1在前面,就算一个时间片执行完了,依旧没有输出完,但是第二次的时候他还是会得到CPU的资源,因为他说系统优先选择优先级高的运行。这与我们的结果不一致。

而且main方法中也输出main,照他这样理解,main应该在后面输出,但是main有时候在中间,有时候在最上面,有时候在最下面。如果照他这样说,我自己认为,第一次的main方法的时间片足够main执行完,所以会输出main在上面,然后下面就就是1一直抢到资源。可是与实际结果不同。

是这本书说错了吗??感谢!!

展开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值