多线程的学习:day6 线程优先级

线程优先级:Java提供一个线程调度器来监控程序中启动后进入就绪状态的所有线程,线程调度器按照优先级决定应该调度哪个线程来执行。默认的线程优先级是5 

优先级低只是意味着获得调度的概率低.并不是优先级低就不会被调用了.这都是看CPU的调度      ,并且优先级的设定建议在start()调度前

6.1 创建一个类实现Runnable接口,并写执行逻辑出来,用以测试线程的优先级

class MyPriority implements Runnable{

    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName() + "--->" + Thread.currentThread().getPriority());
    }
}

6.2 创建一个main类,然后使用getPriority()方法观测主线程的运行优先级(一般都是5),然后引入实现Runnable接口的类,建立几个线程,分别设定这些线程的优先级是多少,然后分别启动这些线程

//线程优先级最小优先级为1,最大优先级为10,一般默认优先级NORM_PRIORITY = 5
public class TestPriority {
            //主线程是默认优先级,是改不了的
            public static void main(String[] args) {
                System.out.println(Thread.currentThread().getName() + "--->" + Thread.currentThread().getPriority());

                MyPriority myPriority = new 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);
                Thread t6 = new Thread(myPriority);
    
                //先设置优先级,再启动
                t1.start();

                t2.setPriority(2);
                t2.start();

                t3.setPriority(4);
                t3.start();

                t4.setPriority(Thread.MAX_PRIORITY); //10
                t4.start();

                t5.setPriority(-1);
                t5.start();

                t6.setPriority(11);
                t6.start();
            }
}

结果分析

由此可以看到不同线程的优先级分别打印,但并不代表优先级高的线程一定比优先级低的线程要先执行;此外我们还能看到优先级不存-1和11,超出1-10的优先级设定就会抛出异常提醒

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值