文章22 | 阅读 8059 | 点赞0
在操作系统中,线程可以划分优先级,线程优先级越高,获得 CPU 时间片的概率就越大,但线程优先级的高低与线程的执行顺序并没有必然联系,优先级低的线程也有可能比优先级高的线程先执行。
在 Java 中,可以通过 setPriority(int newPriority) 方法来设置线程的优先级。
线程的优先级分为 1~10 一共 10 个等级,所有线程默认优先级为 5,如果优先级小于 1 或大于 10,则会抛出 java.lang.IllegalArgumentException 异常。
Java 提供了 3 个常量值可以用来定义优先级,源码如下:
public final static int MIN_PRIORITY = 1;
public final static int NORM_PRIORITY = 5;
public final static int MAX_PRIORITY = 10;
在 Java 中,线程的优先级具有继承性,如果线程 A 启动了线程 B,则线程 B 的优先级与线程 A 的优先级是一样的。
我们可以来举例说明,代码如下:
public class Run {
public static void main(String[] args) {
System.out.println("线程 main 的优先级(改变前):" + Thread.currentThread().getPriority());
// Thread.currentThread().setPriority(9);
// System.out.println("线程 main 的优先级(改变后):" + Thread.currentThread().getPriority());
Thread thread = new Thread("A") {
@Override
public void run() {
System.out.println("线程 A 的优先级:" + this.getPriority());
}
};
thread.start();
}
}
控制台输出如下:
线程 main 的优先级(改变前):5
线程 A 的优先级:5
我们把注释去掉,再次运行代码,控制台输出如下:
线程 main 的优先级(改变前):5
线程 main 的优先级(改变后):9
线程 A 的优先级:9
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_41685207/article/details/108897766
内容来源于网络,如有侵权,请联系作者删除!