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


相关推荐

  • Docker 各种安装

    Docker 各种安装

    2021年7月7日
    79
  • jmeter并发测试教程_jmeter怎么进行并发测试

    jmeter并发测试教程_jmeter怎么进行并发测试jmeter是Apache组织开发的基于Java的压力测试工具,用于对软件做压力测试,很多用户使用的时候不知道jmeter怎么进行并发测试,接下来就跟小编一起来看看吧,有需要的小伙伴不要错过!jmeter怎么进行并发测试1、打开jmeter.bat文件,添加线程组,编辑线程数,这里设置100个线程数,循环2次,就是一台机器发送100*2=200个请求。2、点击线程组,右击添加→取样器→HTTP请求…

    2022年9月1日
    0
  • 【转载】读懂IL代码就这么简单(三)完结篇

    【转载】读懂IL代码就这么简单(三)完结篇

    2021年11月21日
    37
  • 个人搭建git服务器_服务器搭建git仓库

    个人搭建git服务器_服务器搭建git仓库git在push的时候出现insufficientpermissionforaddinganobject错误//解决方法,在git库的目录下//明明一开始创建user的时候有执行这个命令,不知道什么原因chown-Rgit:gitmygit.gitGit本地中文文件名问题解决linux环境//Git本地中文文件名问题解决gitconfig–global…

    2022年10月5日
    0
  • ubuntu安装增强功能失败_ubuntu参考的对象不支持

    ubuntu安装增强功能失败_ubuntu参考的对象不支持Ubuntu换源后,更新提示GPGerror缺少公钥W:GPGerror:http://mirrors.aliyun.comtrusty-securityInRelease:Thefollowingsignaturescouldn’tbeverifiedbecausethepublickeyisnotavailable:NO_PUBKEY40976EAF437D05B5NO_PUBKEY3B4FE6ACC0B21F32W:GPGerror:http:/

    2022年8月31日
    0
  • javah命令详解「建议收藏」

    javah命令详解「建议收藏」概述:最近在写c++/c的一个小的项目,需要打成动态库,供java使用。就对java调用c++/c代码做了简答了解,在此做记录。jni开发第一步,就是用javah命令生成生成c\c++头文件。javah命令参数详解cmd(默认配置jdkpath)执行javah-help如下图:-d和-o这两个参数用于设置生成的C\C++头文件的指定,该两参数选项不能同时使…

    2022年9月25日
    0

发表回复

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

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