JAVA深化篇_30—— 线程使用之线程的优先级【附有详细说明及代码】

线程的优先级

什么是线程的优先级

每一个线程都是有优先级的,我们可以为每个线程定义线程的优先级,但是这并不能保证高优先级的线程会在低优先级的线程前执行。线程的优先级用数字表示,范围从1到10,一个线程的缺省优先级是5。

Java 的线程优先级调度会委托给操作系统去处理,所以与具体的操作系统优先级有关,如非特别需要,一般无需设置线程优先级。

注意

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

线程优先级的使用

使用下列方法获得或设置线程对象的优先级。

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

**注意:**优先级低只是意味着获得调度的概率低。并不是绝对先调用优先级高的线程后调用优先级低的线程。

java 复制代码
class Priority implements Runnable{
  private int num = 0;
  private boolean flag = true;
  @Override
  public void run() {
    while(this.flag){
      System.out.println(Thread.currentThread().getName()+" "+num++);
     }
   }
  public void stop(){
    this.flag = false;
   }
}


public class PriorityThread {
  public static void main(String[] args)throws Exception {
    Priority p1 = new Priority();
    Priority p2 = new Priority();
    Thread t1 = new Thread(p1,"线程1");
    Thread t2 = new Thread(p2,"线程2");
    System.out.println(t1.getPriority());
    //Thread.MAX_PRIORITY = 10
    t1.setPriority(Thread.MAX_PRIORITY);
    //Thread.MAX_PRIORITY = 1
    t2.setPriority(Thread.MIN_PRIORITY);
    t1.start();
    t2.start();
    Thread.sleep(1000);
    p1.stop();
    p2.stop();
   }
}
相关推荐
冷雨夜中漫步4 小时前
Python快速入门(6)——for/if/while语句
开发语言·经验分享·笔记·python
JH30735 小时前
SpringBoot 优雅处理金额格式化:拦截器+自定义注解方案
java·spring boot·spring
m0_736919106 小时前
C++代码风格检查工具
开发语言·c++·算法
Coder_Boy_7 小时前
技术让开发更轻松的底层矛盾
java·大数据·数据库·人工智能·深度学习
2501_944934737 小时前
高职大数据技术专业,CDA和Python认证优先考哪个?
大数据·开发语言·python
helloworldandy7 小时前
使用Pandas进行数据分析:从数据清洗到可视化
jvm·数据库·python
invicinble7 小时前
对tomcat的提供的功能与底层拓扑结构与实现机制的理解
java·tomcat
较真的菜鸟7 小时前
使用ASM和agent监控属性变化
java
黎雁·泠崖7 小时前
【魔法森林冒险】5/14 Allen类(三):任务进度与状态管理
java·开发语言
2301_763472468 小时前
C++20概念(Concepts)入门指南
开发语言·c++·算法