java线程优先级_java线程优先级有几级

java线程优先级_java线程优先级有几级1.yield方法yield()方法的作用是放弃当前的CPU资源,将它让给其他的任务去占用CPU执行时间。当放弃的时间不确定,有可能刚刚放弃,马上又获得CPU时间片。2.线程的优先级在操作系统中,线程可以划分优先级,优先级较高的线程得到的CPU资源越多,也就是CPU优先执行优先级较高的线程对象中的任务。在Java中,线程的优先级分为1~10这10个等级,如果小于1或大于10,则JDK抛出异常thrownewIllegalArgumentException()。JDK中使用3个

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

目录

1. yield方法

2. 线程的优先级

3. 线程优先级的继承特性

4. 优先级具有规则性

5. 优先级具有随机性

6. 守护线程


1. yield方法

yield()方法的作用是放弃当前的CPU资源,将它让给其他的任务去占用CPU执行时间。当放弃的时间不确定,有可能刚刚放弃,马上又获得CPU时间片。

2. 线程的优先级

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

在Java中,线程的优先级分为1~10这10个等级,如果小于1或大于10,则JDK抛出异常throw new IllegalArgumentException()。

JDK中使用3个常量来预置定义优先级的值,代码如下:

public final static int MIN_PRIORITY = 1;
public final static int NORM_PRIORITY = 5;
public final static int MAX_PRIORITY = 10;

3. 线程优先级的继承特性

在Java中,线程的优先级具有继承性,比如A线程启动B线程,则B线程的优先级与A是一样的。

4. 优先级具有规则性

高优先级的线程总是大部分先执行完,但不代表高优先级的线程全部先执行完。

当线程优先级的等级差别很大时,谁先执行完和代码的调用顺序无关。

线程的优先级具有一定的规则性,也就是CPU尽量将执行资源让给优先级比较高的线程。

5. 优先级具有随机性

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

不要把线程的优先级与运行结果的顺序作为衡量的标准,优先级较高的线程不一定每一次都先执行完run()方法中的任务,也就是说,线程优先级与打印顺序无关,不要将两者的关系相关联。它们的关系具有不确定性和随机性。

6. 守护线程

在Java线程中有两种线程,一种是用户线程,另外一种就是守护(Daemon)线程。

什么是守护线程?

守护线程是一种特殊的线程,它的特性有陪伴的含义,当进程中不存在非守护线程了,则守护线程自动销毁。典型的守护线程就是垃圾自动回收线程,当进程中没有非守护线程了,则垃圾回收线程也就没有存在的必要了,自动销毁。

用个比较通俗的比喻解释一下“守护线程”:任何一个守护线程都是整个JVM中所有非守护线程的“保姆”,只要当前JVM实例中存在任何一个非守护线程没有结束,守护线程就在工作,只有当最后一个非守护线程结束时,守护线程才随着JVM一同结束工作。Daemon 的作用是为其他线程的运行提供便利服务,守护线程最典型的应用就是GC (垃圾回收器),它就是一个很称职的守护者。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/181620.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 查看数据库锁表以及解锁

    查看数据库锁表以及解锁今天启动项目时发现项目启动报错CouldnotopenJDBCConnectionfortransaction,weblogic控制台上服务器也有警告。网上提示是根据实际操做确认连接池不足,程序在获取连接完成数据库操作后,没有及时关闭连接。但是按照网上提供的方法改了之后仍然报错,后发现是数据库锁表了。可以根据以下代码查看数据库中有哪些表锁住了selectc.id,c.serial#,c.username,c.osuser,b.owner,b.object_name,a.locked_mod

    2022年6月22日
    47
  • 安防类基础计算机知识,谁能给我一份安防监控基础知识汇总?

    安防类基础计算机知识,谁能给我一份安防监控基础知识汇总?你好,安防监控基础知识汇总:控制部分是整个系统的“心脏”和“大脑”,是实现整个系统功能的指挥中心。控制部分主要由总控制台(有些系统还设有副控制台)组成。总控制台中主要的功能有:视频信号放大与分配、图像信号的较正与补偿、图像信号的切换、图像信号(或包括声音信号)的记录、摄像机及其辅助部件(如镜头、云台、防护罩等)的控制(遥控)等等。在上述的各部分中,对图像质量影响最大的是放大与与分配、较正与…

    2022年6月28日
    20
  • 如何检查linux是否安装了php

    如何检查linux是否安装了php

    2021年10月18日
    46
  • Marlin2.0.9 Configuration_adv.h详解

    Marlin2.0.9 Configuration_adv.h详解/**Marlin3DPrinterFirmwareCopyright©2020MarlinFirmware[https://github.com/MarlinFirmware/Marlin]BasedonSprinterandgrbl.Copyright©2011CamielGubbels/ErikvanderZalmThisprogramisfreesoftware:youcanredistributeitand/ormodif

    2022年7月15日
    21
  • 整合Druid—SpringBoot[通俗易懂]

    整合Druid—SpringBoot[通俗易懂]整合Druid(数据源)Druid简介Java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池。Druid是阿里巴巴开源平台上一个数据库连接池实现,结合了C3P0、DBCP等DB池的优点,同时加入了日志监控。Druid可以很好的监控DB池连接和SQL的执行情况,天生就是针对监控而生的DB连接池。Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。SpringBoot2.0以上默认使用Hikari

    2022年7月23日
    13
  • 关于fastjson在Object转String时的一个坑

    关于fastjson在Object转String时的一个坑关于fastjson在Object转String时的一个坑背景在公司的业务中有这么一个场景:需要将某个系统的结果对象放进Hbase中,然后被后续系统读取使用,在Hbase存储的时候,需要将对象中每个属性解析成字符串存入,但一开始存入接口的设计者只考虑了普通类型(Integer、Long、String之类)的字段存储,未考虑Map或者POJO对象的存储,因此原始代码如下: … if(O…

    2022年6月5日
    59

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号