多线程——线程优先级

目录

1、线程优先级具有继承性

2、线程优先级的作用


Thread类源码中定义:

最低优先级为1
public final static int MIN_PRIORITY = 1;

一般没有继承,没有显示指定优先级时,默认优先级为5
public final static int NORM_PRIORITY = 5;

最高优先级为10
public final static int MAX_PRIORITY = 10;

1、线程优先级具有继承性

当线程A启动B线程的时候,B线程相当于子线程,A为父线程,那么B线程会继承A的优先级,A优先级=B优先级。如果不想继承优先级,可以设置优先级,setPriority();

class A extends Thread{

    @Override

    public void run(){

        B b = new B(); //创建对象的时候,就已经将b线程的优先级设为A的优先级了。

        b.start(); //只是启动而已

    }

}

class B extends Thread{ }

2、线程优先级的作用

优先级越高的线程,CPU越是尽量将资源给这个线程,但是并不代表优先级高,就要等着把优先级高的线程执行完了才会去执行优先级低的线程,不是这样的,只是说CPU会尽量执行高优先级线程,低优先级线程也有机会得到执行,只是机会少一些。

假如两个线程,优先级相差越大,这种被执行的差距就越大,优先级相差小的时候,这种被执行的差距就小一些。

举个例子说明:

 下面有两个内容一样的线程,只是优先级设置不一样,一个是1,一个是9.

public class LowThread extends Thread {
    private int count = 0;
    public int getCount(){
        return count;
    }
    @Override
    public void run(){
        while (true){
            count++;
        }
    }
}

public class HighThread extends Thread {
    private int count = 0;
    public int getCount(){
        return count;
    }
    @Override
    public void run(){
        while (true){
            count++;

        }
    }
}

public static void main(String[] args) throws InterruptedException {
            LowThread lowThread = new LowThread();
            HighThread highThread = new HighThread();
            highThread.setPriority(8);
            lowThread.setPriority(1);
            lowThread.start();

            highThread.start();
            Thread.sleep(1000);
            lowThread.stop();
            highThread.stop();
            System.out.println("lowThread:"+ lowThread.getCount());
            System.out.println("highThread:"+ highThread.getCount());
        }

这个线程的运行时在电脑比较闲的情况下测试的,测试了好多次,9级线程的count总是大于1级线程的count。

说明:高优先级线程被运行的时间总是大于低优先级的线程,就是优先级高,被运行的机会大。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值