线程的优先级

本文深入探讨了线程在CPU执行过程中的调度策略,包括时间片轮转和优先级的作用。介绍了线程优先级的设定与获取方法,以及如何通过调整优先级影响线程的执行顺序。

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

线程的调度:
多个线程被CPU执行的时候涉及到CPU调度的策略,CPU正常采用的是时间片策略,我们也可以设置线程的优先级,CPU在切换线程的时候优先考虑优先级高的线程

线程的优先级
有十个档次:从1到10
三个常量(定义在Thread类当中):
MAX_PRIORITY:表示10
MIN_PRIORITY:表示1
NORM_PRIORITY:表示5(默认的优先级)

获取和设置当前线程的优先级

  • getPriority();
  • setPriority(int p);
package test01;

public class ThreadDemo {
    public static void main(String[] args) {
    //设置优先级记得在start方法执行之前做
        fun f=new fun();
        f.setPriority(Thread.MAX_PRIORITY);//也可以写成f.setPriority(10);注意如果想用7,8之类设置优先级的只能这样用具体的数字
        f.start();
        Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
        for(int i=0;i<5;i++){
            if(i%2==0){
                System.out.println(i+":"+Thread.currentThread().getPriority());
            }
        }
    }
}
class fun extends Thread{
    @Override
    public void run() {
        for(int i=0;i<5;i++){
            if(i%2==0){
                System.out.println(i+":"+getPriority());//getPriority()就是this.getPriority(),this就是线程,所以不用像main中那样写成Thread.currentThread().getPriority()
            }
        }
    }
}

注意: 并不是说分线程的优先级高,就会执行完分线程才执行主线程,只是说从概率上来说同一时间分线程更可能被CPU执行,并不是百分百一定执行分线程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值