线程可以划分优先级,优先级高的线程得到的CPU资源比较多,也就是CPU优先执行优先级高的线程对象中的任务。

设置线程优先级有助于帮助线程规划器确定下一次选中哪一个线程优先执行。

java中优先级分为1-10个级别

线程优先级的继承特性 例如a线程启迪b线程,则b线程的优先级与a的一样。

代码说话:(很简单)

public class MyThread1 extends Thread {@Overridepublic void run() {System.out.println("MyThread1 run priority=" + this.getPriority());MyThread2 thread2 = new MyThread2();thread2.start();}
}public class MyThread2 extends Thread {@Overridepublic void run() {System.out.println("MyThread2 run priority=" + this.getPriority());}
}public static void main(String[] args) {System.out.println("main thread begin priority="+ Thread.currentThread().getPriority());Thread.currentThread().setPriority(6);System.out.println("main thread end   priority="+ Thread.currentThread().getPriority());MyThread1 thread1 = new MyThread1();thread1.start();}

优先级具有规则性

public class MyThread1 extends Thread {@Overridepublic void run() {long beginTime = System.currentTimeMillis();long addResult = 0;for (int j = 0; j < 10; j++) {for (int i = 0; i < 50000; i++) {Random random = new Random();random.nextInt();addResult = addResult + i;}}long endTime = System.currentTimeMillis();System.out.println("★★★★★thread 1 use time=" + (endTime - beginTime));}
}public class MyThread2 extends Thread {@Overridepublic void run() {long beginTime = System.currentTimeMillis();long addResult = 0;for (int j = 0; j < 10; j++) {for (int i = 0; i < 50000; i++) {Random random = new Random();random.nextInt();addResult = addResult + i;}}long endTime = System.currentTimeMillis();System.out.println("☆☆☆☆☆thread 2 use time=" + (endTime - beginTime));}
}public static void main(String[] args) {for (int i = 0; i < 5; i++) {MyThread1 thread1 = new MyThread1();thread1.setPriority(1);thread1.start();MyThread2 thread2 = new MyThread2();thread2.setPriority(10);thread2.start();}}

高优先级的线程总是先执行完

线程的优先级和代码的执行顺序没有关系

优先级具有随机性

一般优先级较高的线程先执行run()方法,但是这个不能说的但肯定,因为线程的优先级具有 “随机性”也就是较高线程不一定每一次都先执行完。

public class MyThread1 extends Thread {@Overridepublic void run() {long beginTime = System.currentTimeMillis();for (int i = 0; i < 1000; i++) {Random random = new Random();random.nextInt();}long endTime = System.currentTimeMillis();System.out.println("★★★★★thread 1 use time=" + (endTime - beginTime));}
}public class MyThread2 extends Thread {@Overridepublic void run() {long beginTime = System.currentTimeMillis();for (int i = 0; i < 1000; i++) {Random random = new Random();random.nextInt();}long endTime = System.currentTimeMillis();System.out.println("☆☆☆☆☆thread 2 use time=" + (endTime - beginTime));}
}public static void main(String[] args) {for (int i = 0; i < 5; i++) {MyThread1 thread1 = new MyThread1();thread1.setPriority(5);thread1.start();MyThread2 thread2 = new MyThread2();thread2.setPriority(6);thread2.start();}}

守护线程介绍:

java 中有两种线程 一个是用户线程,一个是守护(Daemon)线程

典型的守护线程就是垃圾回收线程,如果进程中没有非守护线程了,则守护线程自动销毁。

守护线程作用就是为其他线程的运行提供便利的服务,比如GC。

public class MyThread extends Thread {private int i = 0;@Overridepublic void run() {try {while (true) {i++;System.out.println("i=" + (i));Thread.sleep(1000);}} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}public static void main(String[] args) {try {MyThread thread = new MyThread();thread.setDaemon(true);//设置守护线程thread.start();Thread.sleep(5000);System.out.println("我离开thread对象也不再打印了,也就是停止了!");} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}

线程的优先级(setPriority)相关推荐

  1. java 关闭守护线程_Java并发编程之线程生命周期、守护线程、优先级、关闭和join、sleep、yield、interrupt...

    Java并发编程中,其中一个难点是对线程生命周期的理解,和多种线程控制方法.线程沟通方法的灵活运用.这些方法和概念之间彼此联系紧密,共同构成了Java并发编程基石之一. Java线程的生命周期 Jav ...

  2. Java的知识点30——线程的优先级、终止线程的典型方式、获取线程基本信息的方法

    线程的优先级  1-10 1. NORM_PRIORITY  5 默认  2. MIN_PRIORITY  1  3. MAX_PRIORITY  10 注意:优先级低只是意味着获得调度的概率低.并不 ...

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

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

  4. Java多线程之优先级setPriority

    在操作系统中,线程可以划分优先级,优先级较高的线程得到CPU资源较多,也就是CPU优先执行优先级较高的线程对象中的任务(其实并不是这样). 在Java中,线程的优先级用setPriority()方法就 ...

  5. java 多线程 优先级_java多线程之线程的优先级

    在操作系统中,线程可以划分优先级,优先级较高的线程得到CPU资源较多,也就是CPU优先执行优先级较高的线程对象中的任务(其实并不是这样). 在java中,线程的优先级用setPriority()方法就 ...

  6. Java线程的调度及线程的优先级

    调度策略 Java的调度方法 同优先级线程组成先进先出队列(先到先服务),使用时间片策略. 对高优先级,使用优先调度的抢占式策略. 线程的优先级等级 Thread.MAX_PRIORITY:10 Th ...

  7. java中一个线程最小优先数_Java线程的优先级

    Java线程可以有优先级的设定,高优先级的线程比低优先级的线程有更高的几率得到执行(不完全正确,请参考下面的"线程优先级的问题"). 记住当线程的优先级没有指定时,所有线程都携带普 ...

  8. java 多线程4: java线程的优先级

    Java线程的优先级取值范围是1 (Thread.MIN_PRIORITY ) 到 10 (Thread.MAX_PRIORITY ).如果没有设置, 线程默认的优先级是NORM_PRIORITY.这 ...

  9. JAVA中的多线程(八):线程的优先级和yield方法

    JAVA中的多线程(八):线程的优先级和yield方法 优先级代表着抢资源的频率 所有线程默认优先级是5 yield()临时释放线程的执行权 1 class Demo implements Runna ...

最新文章

  1. 关于P2P流量的识别方式
  2. 不使用任何框架,手写纯 JavaScript 实现上传本地文件到 ABAP 服务器
  3. linux shell 函数 格式化,速查笔记(linux shell编程)
  4. wetask.cn领度任务全新试用体验
  5. python使用级数pi的近似值_JavaScript与Python计算pi的近似值运行时间对比
  6. 使用git作为首页以及克隆上传创建下载删除
  7. 传智php网课,传智自动刷网课视频工具
  8. java text类型转换_java语言实现Text格式转换成pdf文件
  9. java spring定时器_Spring定时器的使用
  10. 基于python数据可视化论文-基于Python的数据脱敏与可视化分析
  11. 如何在Excel中隐藏单元格,行和列
  12. Ontology对接资源整理
  13. 毛玻璃效果 php,CSS3教程之制作倾斜导航条和毛玻璃效果
  14. IT男的神级吐槽 || 我们IT人的心声(_)
  15. 【Python脚本】harris调试时转换gray,Ix,Iy,resp等数据为png图片
  16. 记一次批量定时抓取微信公众号文章的实现
  17. ArcGIS空间数据查询与处理
  18. 比较超声与临床体检检查早期关节炎患者手部屈肌腱腱鞘炎
  19. 如何让内容运营渗透产品,带动产品高速成长
  20. word如何一键全选_如何使用Word全选快捷键快速选中文档?

热门文章

  1. OPA237NA/250
  2. Dynamo-【NO.01】数据与数据处理节点
  3. java csr 证书_Java bouncycastle API 创建 CSR 和签发证书
  4. 新经理人所要具备的平衡术
  5. 【IoT】从华为的角度来谈谈如何做战略规划
  6. MySQL数据库——day26 数据库安装,卸载,概念,msq的介绍,安装,连接,DDL,DML,DQL模糊查询,字段控制(别名和运算),排序,聚合函数,分组查询(where和having),分页查询
  7. 如何利用亚马逊买家秀和亚马逊红人视频关联竞品流量,帮助产品曝光抢流量和店铺引流
  8. 如何判断对象已经死亡
  9. 腾讯位置 - 地点搜索(结尾附视频)
  10. 关于shell脚本中‘’,“”,``的各自用途