zoukankan      html  css  js  c++  java
  • 6.7Java多线程优先级(priority)

    6.7Java多线程优先级(priority)

    Java线程调度特点

    • 提供一个线程调度器来监控程序中启动后进入就绪状态的所有线程

    • 线程调度器按照线程的优先级决定应调度哪个线程来执行

    • 线程的优先级范围:

      • Thread.MIN PRIORITY = 1
      • Thread.MAX PRIORITY = 10
      • Thread NORM PRIORITY = 5

    获得或设置线程对象的优先级

    int getPriority();
    void setPriority(int newPriority);

    特点:

    • 优先级设定建议再start调用之前

    • 优先级低只是获得调度的概率低,不是绝对先调用优先级高的线程后调用优先级低的线程

    线程状态特点:
    package iostudy.priority;

    /**
    * 测试线程的优先级1-10
    * 1、Normal priority--->默认是5,所有线程默认的值都是5
    * 2、Min priority--->1
    * 3、Max priority--->10
    */
    public class PriorityTest {
       public static void main(String[] args) {
           /*获取线程等级*/
           System.out.println(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, "秃笔南玻fai务");

           /*设置线程优先级,并且设置再启动之前*/
           t1.setPriority(Thread.MAX_PRIORITY);
           t2.setPriority(Thread.MAX_PRIORITY);
           t3.setPriority(Thread.MIN_PRIORITY);
           t4.setPriority(Thread.MIN_PRIORITY);
           t5.setPriority(Thread.MAX_PRIORITY);
           t6.setPriority(Thread.MAX_PRIORITY);

           /*启动线程--->调用start方法*/
           t1.start();
           /*多线程启动*/
           t2.start();
           t3.start();
           t4.start();
           t5.start();
           t6.start();
           /*
           待会创建多个线程
           并且需要设置线程优先级
           优先级不代表绝对的线程执行先后顺序
           优先级高只代表执行的时间片可能多一些、早一些
            */
      }
    }

    /**
    * 创建线程类
    * @since JDK 1.8
    * @date 2021/6/7
    * @author Lucifer
    */
    class MyPriority implements Runnable{

       /*重写run方法*/
       @Override
       public void run(){
           System.out.println(Thread.currentThread().getName() + "--->" + Thread.currentThread().getPriority());
           /*线程礼让*/
           Thread.yield();
      }
    }

     

    It's a lonely road!!!
  • 相关阅读:
    Android Library projetcts cannot be exported.
    技术阅读记录(一)
    ASP.NET MVC Model绑定(五)
    Linux 高速操作IOport
    This version of the rendering library is more recent than your version of IntelliJ IDEA.
    WPF使用RoutedCommand自己定义命令
    AutoLayout具体解释+手把手实战
    JNI之——Can't load IA 32-bit .dll on a AMD 64-bit platform错误的解决
    9.Nexus私服安装配置
    Alcatraz:管理Xcode插件
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/14860610.html
Copyright © 2011-2022 走看看