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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JavaWeb项目org.apache.jasper.JasperException: 解决方法

    descriptionTheserverencounteredaninternalerror()thatpreventeditfromfulfillingthisrequest.exceptionorg.apache.jasper.JasperException:/PCManage/controlsecletthenews.jsp(303,12)ThefunctiongetNidmustbeusedwithaprefixwhenadefaultname

    2022年4月8日
    246
  • Android Fragment 简单实例

    Android Fragment 简单实例

    2022年2月3日
    41
  • QTreeWidget 遍历所有子节点(QTreeWidgetItem)[通俗易懂]

    QTreeWidget 遍历所有子节点(QTreeWidgetItem)[通俗易懂]这恐怕是最简单的写法了,逛论坛发现的,亲测好用//ui文件中定义//QTreeWidget*treeWidget;//…//遍历treeWidgetQTreeWidgetItemIteratorit(ui.treeWidget);while(*it){//dosomethinglike…

    2022年10月1日
    2
  • MyBatis缓存机制详解

    MyBatis缓存机制详解MyBatis缓存机制详解1.MyBatis缓存1.1MyBatis缓存概述1.2MyBatis一二级缓存区别2.MyBatis一级缓存2.1MyBatis一级缓存概述2.2MyBatis一级缓存配置2.3MyBatis一级缓存原理分析2.4MyBatis一级缓存总结3.MyBatis二级缓存3.1MyBatis二级缓存概述3.2MyBatis二级缓存配置3.3MyBatis二级缓存原理分析3.4MyBatis二级缓存总结4.MyBatis缓存测试5.参考文档1.MyBat

    2022年5月11日
    33
  • 在HTML中添加背景音乐[通俗易懂]

    在HTML中添加背景音乐[通俗易懂]方法一:在源代码中编写以下几句代码将能实现在HTML网页内添加背景音乐; 你的浏览器版本太低,不支持audi

    2022年7月25日
    8
  • 不联网,ubuntu下安装gcc

    不联网,ubuntu下安装gcc1.下载 在GCC网站上(http://gcc.gnu.org/)或者通过网上搜索可以查找到下载资源。目前GCC的最新版本为3.4.0。可供下载的文件一般有两种形式:gcc-3.4.0.tar.gz和gcc-3.4.0.tar.bz2,只是压缩格式不一样,内容完全一致,下载其中一种即可。 2.解压缩 根据压缩格式,选择下面相应的一种方式解包(以下的“%”表示命令行提示符

    2022年7月24日
    27

发表回复

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

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