java线程优先级别_java线程优先级有什么意义?

给线程设置了高优先级仍然不能保证他被最先执行完,那么优先级到底有什么用处?例如:classCustomThreadextendsThread{CustomThread(Stringname){super(name);}publicsynchronizedvoi...

给线程设置了高优先级仍然不能保证他被最先执行完,那么优先级到底有什么用处?

例如:

class CustomThread extends Thread {

CustomThread(String name) {

super(name);

}

public synchronized void run() {

System.out.println(this.getName());

try {

sleep(2000);

} catch (InterruptedException e) {

throw new RuntimeException(e);

}

System.out.println("NAME: " + this.getName() + " Bye");

}

}

class MultiThread {

public static void main(String args[]) throws InterruptedException {

CustomThread thread1 = new CustomThread("first");

CustomThread thread2 = new CustomThread("second");

CustomThread thread3 = new CustomThread("third");

CustomThread thread4 = new CustomThread("fourth");

thread1.setPriority(Thread.MAX_PRIORITY);

thread2.setPriority(Thread.MAX_PRIORITY-1);

thread3.setPriority(Thread.MAX_PRIORITY-2);

thread4.setPriority(Thread.MAX_PRIORITY-3);

thread1.start();

thread2.start();

thread3.start();

thread4.start();

}

}

结果是:

first

second

third

fourth

NAME: second Bye

NAME: first Bye

NAME: third Bye

NAME: fourth Bye

前面是按照优先级顺序来的,可是后面sleep之后怎么控制顺序?

henterji 我明白你的意思,但我关心的是优先级别高的线程却不一定会先完成,这个问题如何解决?谢谢

另外,上面程序的运行结果前面部分总是会按照first,second,third,fourth的顺序显示,而sleep之后就会随机排序了,优先级此时就不起作用了,有没有解决的办法?

展开

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值