浅墨散人 浅墨散人
  • 基础
  • 设计模式
  • JVM
  • Maven
  • SpringBoot
  • 基础
  • Flask
  • Diango
  • Pandas
  • SqlAlchemy
  • Sqoop
  • Flume
  • Flink
  • Hadoop
  • Hbase
  • Hive
  • Kafka
  • Kylin
  • Zookeeper
  • Tez
  • MySQL
  • Doris
  • Chrome
  • Eclipse
  • IDEA
  • iTerm2
  • Markdown
  • SublimeText
  • VirtualBox
  • WebStrom
  • Linux
  • Mac
  • Hexo
  • Git
  • Vue
  • VuePress
  • 区块链
  • 金融
数据仓库
数据治理
读书笔记
关于我
GitHub (opens new window)
  • 基础
  • 设计模式
  • JVM
  • Maven
  • SpringBoot
  • 基础
  • Flask
  • Diango
  • Pandas
  • SqlAlchemy
  • Sqoop
  • Flume
  • Flink
  • Hadoop
  • Hbase
  • Hive
  • Kafka
  • Kylin
  • Zookeeper
  • Tez
  • MySQL
  • Doris
  • Chrome
  • Eclipse
  • IDEA
  • iTerm2
  • Markdown
  • SublimeText
  • VirtualBox
  • WebStrom
  • Linux
  • Mac
  • Hexo
  • Git
  • Vue
  • VuePress
  • 区块链
  • 金融
数据仓库
数据治理
读书笔记
关于我
GitHub (opens new window)
  • Java基础

    • Java基础
    • CSS自定义滚动条样式
    • Java发送短信
    • 线程的优先级
      • 一、介绍
      • 二、实例
      • 三、总结
    • 线程的同步之Synchronized在单例模式中的应用
    • 线程的同步之Synchronized的使用
    • 线程的基本概念
    • 线程的死锁
    • 线程的状态和常用操作
  • Java
  • Basic
2016-03-29
目录

线程的优先级

# 一、介绍

在Java中,每一个线程都有一个优先级,默认是一个线程继承它的父线程的优先级。一个线程的默认优先级为NORM_PRIORITY = 5 设置优先级的方法setPriority() ,可设置的值如下:

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

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

# 二、实例

线程优先级实例代码:

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

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

//线程类
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
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

执行结果如下: 线程1-->47755 统计共执行了4685次 线程2-->19211 统计共执行了1469次

# 三、总结

  1. 每个线程都有一个默认的优先级,默认情况下是NORM_PRIORITY = 5
  2. 线程的优先级表示的是被执行的概率,并不是绝对的优先执行。
  3. 设置线程优先级的方法setPriority(Thread.MAX_PRIORITY);
#java#Thread
最后更新时间: 2022/7/23 10:17:11
Java发送短信
线程的同步之Synchronized在单例模式中的应用

← Java发送短信 线程的同步之Synchronized在单例模式中的应用→

最近更新
01
分区分桶
08-21
02
数据模型(重要)
08-21
03
安装和编译
08-21
更多文章>
Theme by Vdoing
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式