常用的优先级

一般来说,优先级的范围为1-10,但在个别的操作系统上有所不同。
优先级高的线程,在运行的时候将会获得更多的运行机会。

代码

package cn.hanquan.test;import java.io.FileNotFoundException;/** 优先级高的线程 获得更多的运行机会*/public class TestP {public static void main(String[] args) throws InterruptedException, FileNotFoundException {// 我的线程类MyP mp = new MyP();// 建立线程数组Thread t1 = new Thread(mp);Thread t2 = new Thread(mp);t1.setPriority(1);t2.setPriority(10);t1.start();t2.start();}
}class MyP implements Runnable {@Overridepublic void run() {Thread.yield();for (int i = 0; i < 100; i++) {System.out.println(Thread.currentThread().getName() + " --> Priority " + Thread.currentThread().getPriority());}}
}

运行结果

Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1

附:之前错误的理解,留着没删,是因为里面有建立线程数组的方式,可能会用到。

错误之处在于:线程的优先级体现在获得运行的概率上,而不是体现在开始运行的顺序上。

package cn.hanquan.test;import java.io.FileNotFoundException;/** 线程优先级的是 优先级高的先运行的概率大*/public class TestP {public static void main(String[] args) throws InterruptedException, FileNotFoundException {// 我的线程类MyP mp = new MyP();// 建立线程数组Thread[] t = new Thread[100];// 设定线程优先级for (int i = 0; i < 50; i++) {t[i] = new Thread(mp);t[i].setPriority(1);// MIN_PRIORITY}for (int i = 50; i < 100; i++) {t[i] = new Thread(mp);t[i].setPriority(10);// MAX_PRIORITY}// 开启线程 这里开启的顺序对实际线程的开始顺序也有一定的影响// sxt300级中没有使用数组 好像就没有这种影响?for (int i = 0; i < 100; i++) {t[i].start();}}
}class MyP implements Runnable {@Overridepublic void run() {Thread.yield();System.out.println(Thread.currentThread().getName() + " --> Priority " + Thread.currentThread().getPriority());}}

运行结果

运行结果并没有完全符合预期

但是如果把30行的递增序改为递减序,几乎每一次都是优先级为10的线程先运行,优先级为1的线程后运行,这样大概可以说明线程优先级对于运行顺序的的影响。

【Java多线程】线程优先级:优先级高,执行机会多相关推荐

  1. Java多线程——线程的优先级和生命周期

    Java多线程--线程的优先级和生命周期 摘要:本文主要介绍了线程的优先级以及线程有哪些生命周期. 部分内容来自以下博客: https://www.cnblogs.com/sunddenly/p/41 ...

  2. Java多线程 -- 线程的优先级

    Java线程可以有优先级的设定,高优先级的线程比低优先级的线程有更高的几率得到执行(不完全正确,请参考下面的"线程优先级的问题"). 优先级的取值 Java线程的优先级是一个整数, ...

  3. Java多线程精讲(非高并发-授课专用)附synchronized

    Java多线程精讲(非高并发-授课专用) 目录 程序,进程,线程的基本概念 start与run的区别 函数测试demo: 创建线程(一)[new Thread()] 创建线程(二)[extends T ...

  4. java多线程 线程安全_Java中的线程安全

    java多线程 线程安全 Thread Safety in Java is a very important topic. Java provides multi-threaded environme ...

  5. java多线程-线程的停止【interrupt】

    java多线程-线程的停止 文章目录 java多线程-线程的停止 线程停止的原理 如何正确停止线程 在普通情况下停止线程 代码展示 在阻塞情况下停止线程 代码展示 线程在每次迭代后都阻塞 代码展示 停 ...

  6. Java 多线程线程安全(面试概念解答二)

    Java 多线程线程安全 什么是线程安全? 为什么有线程安全问题? 线程安全解决办法? 同步代码块 同步函数 静态同步函数 多线程死锁 多线程的三大特性 原子性 可见性 有序性 Java内存模型 Vo ...

  7. JAVA --- 多线程 -- 线程的创建

    JAVA - 多线程 – 线程的创建 线程的概念: 说起线程,先说程序和进程,多任务的概念. 程序(program):是指令和数据的有序集合,本身没有任何运行的含义,是一个静态的概念. 进程(proc ...

  8. Java多线程- 线程池的基本使用和执行流程分析 - ThreadPoolExecutor

    线程池的实现原理 池化技术 一说到线程池自然就会想到池化技术. 其实所谓池化技术,就是把一些能够复用的东西放到池中,避免重复创建.销毁的开销,从而极大提高性能. 常见池化技术的例如: 线程池 内存池 ...

  9. Java多线程-线程的创建(Thread类的基本使用)

    文章目录 一. 线程和Thread类 1. 线程和Thread类 1.1 Thread类的构造方法 1.2 启用线程的相关方法 2. 创建第一个Java多线程程序 3. 使用Runnable对象创建线 ...

  10. Java 多线程— 线程的生命周期及方法

    2019独角兽企业重金招聘Python工程师标准>>> 这篇博客介绍线程的生命周期. 线程是一个动态执行的过程,它也有从创建到死亡的过程. 线程的几种状态 在 Thread 类中,有 ...

最新文章

  1. spark- PySparkSQL之PySpark解析Json集合数据
  2. win10下右键菜单添加“打开cmd”
  3. Python a,b = b,a 是怎么赋值的
  4. Spring Boot——基于AOP的HTTP操作日志解决方案
  5. Hibernate性能提升
  6. 在.net3.5中使用ListView控件和DataPager控件笔记
  7. 浅谈:飞秋 程序设计之网络通信
  8. springcloud断点续传源码_两套SpringCloud版的开源项目,项目源码和教程齐全
  9. 终端模拟器大 PK,你 Pick 谁?
  10. 云计算之路-试用Azure:搭建自己的内网DNS服务器
  11. 从破解APP开始学Android——用户登录验证
  12. Codeforces 1071C Triple Flips 构造
  13. VMware vmdk文件打开方法
  14. Windows10息屏快的问题解决办法(在更改屏幕和睡眠时间无效的情况下)
  15. 微信功能升级:低调开卖全球上网卡 得罪群主进不了群
  16. textarea右下角有字数计算
  17. 4.3.3 运行心跳任务
  18. 二叉树的深度和平衡二叉树的深度
  19. Python爬虫之爬取淘女郎照片示例详解
  20. 什么事,是你当了领导才明白的?

热门文章

  1. HDU - 4856 Tunnels(哈密顿路径+状压dp)
  2. 特征值与特征向量_机器学习和线性代数 - 特征值和特征向量
  3. Web开发-Django初识及实战
  4. mysql流量控制_Daloradius限制上网流量
  5. 九省联考2018总结
  6. 1.2句柄及 WinMain函数
  7. GROUP BY 子句中 选择列表中的列无效,因为该列没有包含在聚合函数或
  8. Android 模拟器下载、编译及调试
  9. Python 找出一个整数数组中,第二大的数。
  10. 深入理解操作系统内核架构(送书)!