• 线程的优先级


               一、介绍       

       在Java中,每一个线程都有一个优先级,默认是一个线程继承它的父线程的优先级。一个线程的默认优先级为NORM_PRIORITY = 5

      设置优先级的方法setPriority() ,可设置的值如下:  

    1
    2
    3
    static int MAX_PRIORITY = 10;//线程可以具有的最高优先级(执行概率最高)
    static int MIN_PRIORITY = 1; //线程可以具有的最低优先级(执行概率最低)
    static int NORM_PRIORITY = 5//分配给线程的默认优先级

       线程的优先级:不是说哪个线程优先执行,如果设置某个线程的优先级高。那就是有可能被执行的概率高。并不是优先执行


     二、实例       

    线程优先级实例代码:这里设置线程1为最高优先级(被执行的概率高) 设置线程2为最低优先级

    这里设置了线程1最高和线程2最低优先级后,并不是说线程1就优先执行等到线程1执行完才执行线程2。而是说线程1被执行的概率高。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    //线程类
    public class PriorityThread implements Runnable{
        private boolean flag = true;
        private int num=0;
        @Override
        public void run() {
            while(flag){
                System.out.println(Thread.currentThread().getName()+"-->"+num++);
            }
        }
        public void stop(){
            this.flag = !this.flag;
        }
    }
    //测试线程优先级
    public class PriorityDemo {
        public static void main(String[] args) throws InterruptedException {
            PriorityThread it1 = new PriorityThread();
            PriorityThread it2 = new PriorityThread();
            Thread proxy1 = new Thread(it1,"线程1");
            Thread proxy2 = new Thread(it2,"线程2");
            proxy1.setPriority(Thread.MAX_PRIORITY);//设置为最高优先级
            proxy2.setPriority(Thread.MIN_PRIORITY);//设置为最低优先级
            proxy1.start();
            proxy2.start();
            Thread.sleep(1000);
            it1.stop();
            it2.stop();
        }
    }

    执行结果如下:

    线程1-->47755   统计共执行了4685次

    线程2-->19211   统计共执行了1469次


     三、总结       

    1、每个线程都有一个默认的优先级,默认情况下是NORM_PRIORITY = 5

    2、线程的优先级表示的是被执行的概率,并不是绝对的优先执行。

    3、设置线程优先级的方法setPriority(Thread.MAX_PRIORITY);







  • 相关阅读:
    arthas常用命令记录
    idea 的 http-client
    springboot 接口层参数校验 自定义参数校验
    Spring AOP 实现——使用annotation、pointcut、aspect
    Redis 热点名词
    SpringCloud注册发现配置
    【设计模式】-行为型-11-解释器模式
    【设计模式】-行为型-10-备忘录模式
    【设计模式】-创建型-9-访问者模式
    Kubernetes运行原理
  • 原文地址:https://www.cnblogs.com/meet/p/5290938.html
Copyright © 2020-2023  润新知