我是靠谱客的博主 想人陪心锁,最近开发中收集的这篇文章主要介绍14.0、Java多线程——线程的优先级,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

14.0、Java多线程——线程的优先级

        Java提供一个线程调度器来监控程序中启动后进入就绪状态的所有线程,线程调度器按照优先级决定应该调度那个线程来执行线程的优先级用数字来表示,范围从 1~10 :

在Thread类原码中 他设置了三个优先级常量,如下所示:

        Thread.MIN_PRIORITY = 1;

        Thread.MAX_PRIORITY = 10;

        Thread.NORM_PRIORITY = 5;

注意:

        线程的优先级越高则权重越大,越能够被CPU优先调度,但是也不是百分之百,因为优先级低只是意味着获得调度的概率低,并不是优先级低就不会被调用了,这都是要看CPU的调度情况了

使用以下方式 改变 或 获取 优先级 :

        getPriority()         setPriority(int xxx);

        通过查看原码可以知道 -> setPriority() 方法中会判断如果设置的优先级低于 1 或者超过 10 会报出异常。

        main主函数的 默认优先级是 5

下面我们来看看用代码来如何测试,测试代码如下所示:

package com.hkl.state;

public class TestPriority {

    public static void main(String[] args) {
        //输出主函数的默认优先级->5
        System.out.println(Thread.currentThread().getName()+"->"+Thread.currentThread().getPriority());

        MyPriority myPriority = new MyPriority();
        Thread t1 = new Thread(myPriority,"t1");
        Thread t2 = new Thread(myPriority,"t2");
        Thread t3 = new Thread(myPriority,"t3");
        Thread t4 = new Thread(myPriority,"t4");
        Thread t5 = new Thread(myPriority,"t5");
        Thread t6 = new Thread(myPriority,"t6");

        t1.start();
        t2.setPriority(1);
        t2.start();
        t3.setPriority(5);
        t3.start();
        t4.setPriority(Thread.MAX_PRIORITY);
        t4.start();
        t5.setPriority(-1);
        t5.start();
        t6.setPriority(11);
        t6.start();
    }
}

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

        上面代码中我们在 run() 方法中输出每条线程的优先级,必须在每条线程进入就绪状态之前设置优先级,否则进入就绪之后再设置将不起作用,如果不给线程设置优先级则默认为 5 级

后台的运行结果,如下所示: 

        可以看到图中报有异常,就是设置优先级的时候越界了->上面代码中设置了-1 和 11优先级。

        可以看到 t1 虽然设置的优先级为 5,t4 的优先级为 10,但是由于CPU先行调度了 t1 线程所以尽管 t4 优先级高于 t1,却是 t1 先执行

最后

以上就是想人陪心锁为你收集整理的14.0、Java多线程——线程的优先级的全部内容,希望文章能够帮你解决14.0、Java多线程——线程的优先级所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部