线程优先级-java

线程优先级

java提供一个线程调度器来监控程序中启动后(start)进入就绪状态的所有线程,线程调度器按照优先级决定应该调度哪个线程来执行(优先级高的先调度)。使用getPriority()方法来获取优先级,使用setPriority(int x)方法来改变优先级。

  • 线程的优先级用数字表示,范围从1~10
  • Thread.MIN_PRIORITY = 1;
  • Thread.NORM_PRIORITY = 5;
  • Thread.MAX_PRIORITY = 10;
public class TestPriority {
    public static void main(String[] args) {
        //主线程优先级
        System.out.println(Thread.currentThread().getName()+"--优先级--"+Thread.currentThread().getPriority());

        MyPriority myPriority = new MyPriority();

        Thread t0 = new Thread(myPriority);
        Thread t1 = new Thread(myPriority);
        Thread t2 = new Thread(myPriority);
        Thread t3 = new Thread(myPriority);
        Thread t4 = new Thread(myPriority);
        Thread t5 = new Thread(myPriority);

        //先设置优先级,再启动
        System.out.println("\n----默认优先级----");
        t1.start();//启动线程,并不会立即执行,等待CPU的调度
        System.out.println("----默认优先级----\n");
        t2.setPriority(3);
        t2.start();

        t3.setPriority(7);
        t3.start();

        t4.setPriority(Thread.MAX_PRIORITY);//最大优先级
        t4.start();

        t5.setPriority(Thread.MIN_PRIORITY);//最小优先级
        t5.start();

        t0.setPriority(15);//会报错
        t0.start();

    }

}

class MyPriority implements Runnable{
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName()+"--优先级--"+Thread.currentThread().getPriority());
    }
}

运行结果:

main--优先级--5

----默认优先级----
Thread-1--优先级--5
----默认优先级----

Thread-2--优先级--3
Thread-3--优先级--7
Thread-4--优先级--10
Thread-5--优先级--1
Exception in thread "main" java.lang.IllegalArgumentException
	at java.lang.Thread.setPriority(Thread.java:1089)
	at com.study.多线程.demo2.TestPriority.main(TestPriority.java:34)

Process finished with exit code 1

从中我们可以发现,main线程的优先级为5,线程的默认优先级也是5。因为代码量太少,在运行结果中并没有按照优先级高低来执行。所以说优先级低只是意味着获得调度的概率低,并不是优先级低就不会被调用,得看CPU的调度。


学习自B站遇见狂神说
相关博客:多线程-汇总

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值