Java 多线程 线程的优先级

本文探讨了Java中线程的优先级概念,说明高优先级线程并不保证执行顺序,仅影响获取CPU资源的概率。线程的优先级范围为1到10,新建线程默认优先级为5。尽管优先级不能确保执行顺序,但高优先级线程在CPU资源竞争中占有优势,尤其是在CPU繁忙时,优先级低的线程仍有机会执行,但执行时间较少。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

每个线程都有一个优先级,高优先级线程的执行优先于低优先级线程。(优先并不代表执行顺序,后面会【解释】

在一个线程中开启另外一个新线程,则新开线程称为该线程的子线程,子线程初始优先级与父线程相同

Java线程的优先级是一个整数 (数字越大优先级越高) 其取值范围是 1 (Thread.MIN_PRIORITY ) - 10 (Thread.MAX_PRIORITY )

从图中可以看出新建线程的默认优先级是 NORM_PRIORITY = 5

这里写图片描述

源码 ↓
这里写图片描述

这里写图片描述

这里写图片描述

    public static void main(String[] args) throws InterruptedException {
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                out.println("\t" + Thread.currentThread().getName());
            }
        };

        Thread t1 = new Thread(runnable, "A");
        Thread t2 = new Thread(runnable, "B");
        Thread t3 = new Thread(runnable, "C");
        t1.setPriority(8);
        t2.setPriority(4);
        t3.setPriority(1);
        t1.start();
        t2.start();
        t3.start();
    }

输出 ↓ 可以看出上面的代码并没有什么卵用,并没有按照理想的顺序运行
这里写图片描述

线程的优先级仍然无法保障线程的执行次序

只不过,优先级高的线程获取CPU资源的概率较大,优先级低的并非没机会执行。

如果CPU有空闲,即使是低优先级的线程,也可以得到足够的执行时间,接近满负荷执行。
如果CPU比较繁忙,优先级的作用就体现出来了,优先级高的线程能得到比较多的执行时间,优先级比较低的线程也能得到一些执行时间,但会少一些;CPU越繁忙,差异通常越明显。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值