Java多线程优先级

java多线程优先级使用setPriority方法

三个特性:继承性,规则性和随机性

源码: public final void setPriority(int newPriority) {
        ThreadGroup g;
        checkAccess();
        if (newPriority > MAX_PRIORITY || newPriority < MIN_PRIORITY) {
            throw new IllegalArgumentException();
        }
        if((g = getThreadGroup()) != null) {
            if (newPriority > g.getMaxPriority()) {
                newPriority = g.getMaxPriority();
            }
            setPriority0(priority = newPriority);
        }
    }

源码解释:线程优先级分为1-10,如果大于10或者小于1,则JDK抛出异常 throw new IllegalArgumentException(),不写优先级默认为5

1,首先继承性 

概念:A线程继承B线程,A,B的优先级是一样的
示例代码
package ThreadPackage;

public class youxianjiThread {
public static void main(String[] args) {
System.out.println("main start "+Thread.currentThread().getPriority());
//hread.currentThread().setPriority(6);
System.out.println("main end "+Thread.currentThread().getPriority());
myThread1 thread=new myThread1();
thread.start();
      }
}
class myThread1 extends Thread{
@Override
public void run() {
System.out.println("myThread1 "+this.getPriority());
myThread2 thread=new myThread2();
thread.start();
}
}
class myThread2 extends Thread{
@Override
public void run() {
System.out.println("myThread2 "+this.getPriority());
}
}
执行结果:
main start 5
main end 5
myThread1 5
myThread2 5
去掉注释执行结果:
main start 5
main end 6
myThread1 6
myThread2 6

2,规则性

概念:
高优先级的总是先执行完,但是不是全部先执行完,当优先级差距较大时,谁先执行完,与代码调用顺序没有关系,CPU尽量将执行资源让给优先级比较高的线程,

实例查看优先级

3,随机性
概念: 但是当线程优先级差距不大时,则不一定总是高的先执行完
代码:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值