【Java多线程】线程中几个常见的属性以及状态

目录

Thread的几个常见属性

1、Id

2、Name名称

3、State状态

4、Priority优先级

5、Daemon后台线程

6、Alive存活


 

Thread的几个常见属性

1、Id

ID 是线程的唯一标识,由系统自动分配,不同线程不会重复。

2、Name名称

用户定义的名称。该名称在各种调试工具中都会用到。

3、State状态

状态表示线程当前所处的一个情况。和进程一样,线程也有状态,Java中对线程的状态又进一步的区分,表达得更加丰富。

  • NEW(新建状态)Thread对象创建了,但是还没有调用start,内核中的线程还没创建。
  • RUNNABLE(可运行状态)线程就绪(正在cpu上执行,或者等待调度)
  • BLOCKED(阻塞状态)由于锁竞争引起的阻塞
  • WAITING(等待状态)通过 wait/join 等不带时间的方法进入的阻塞。
  • TIMED_WAITING(定时等待状态)通过 sleep 等带有时间的方法进入的阻塞。
  • TERMINATED(终止状态)run方法执行完毕,内核中的线程已经销毁。

 

4、Priority优先级

顾名思义,但是在Java中设置优先级,效果可能不太明显(由于系统的随机调度)。

5、Daemon后台线程

Daemon后台线程,又称守护线程。与之对应的是前台线程。前台线程的运行,会阻止进程结束;后台线程的运行,不会阻止进程结束。jvm内置的线程都为后台线程。

    public static void main(String[] args) {
        Thread t = new Thread(new Runnable() {
            @Override
            public void run() {
                while (true) {
                    System.out.println("hello thread");
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }
                }
            }
        }, "自定义线程名称");
        t.start();
    }

以上代码中,t 线程就属于前台线程
即点击执行后,main会直接执行完毕,而此时 t 线程仍然会一直循环打印"hello thread"
也证明了 t 线程阻止了进程的结束,因此就是前台线程。

    public static void main(String[] args) {
        Thread t = new Thread(new Runnable() {
            @Override
            public void run() {
                while (true) {
                    System.out.println("hello thread");
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }
                }
            }
        }, "自定义线程名称");
        t.setDaemon(true);  //在start启动前,设置线程为后台线程
        t.start();
    }

此时 t 线程就无法阻止进程的结束
结果就是不会打印 "hello thread" 或者只打印了一次(因为随机调度)

6、Alive存活

 alive存活,表示内核中的线程(PCB)是否还存在。

    public static void main(String[] args) throws InterruptedException {
        Thread t = new Thread(new Runnable() {  //此时只是有了t对象,但是内核pcb还没有
            @Override
            public void run() {
                try {
                    Thread.sleep(1000);   //sleep一秒
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
            }
        }, "自定义线程名称");
        System.out.println(t.isAlive());   //false
        t.start();    //start后,才真正在内核中创建出pcb
        System.out.println(t.isAlive());   //true
        Thread.sleep(2000);   //sleep两秒,等待t线程结束
        System.out.println(t.isAlive());   //false
    }

t 线程执行完后,内核pcb也随之释放,但是当程序还未结束时,t 变量还存在,此时也为false 

 

【Java多线程】Thread类的基本用法-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/zzzzzhxxx/article/details/136121421?spm=1001.2014.3001.5501
【数据结构】二叉树的三种遍历(非递归讲解)-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/zzzzzhxxx/article/details/136044643?spm=1001.2014.3001.5501对进程与线程的理解-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/zzzzzhxxx/article/details/136115808?spm=1001.2014.3001.5501

如果觉得作者写的不错,求给博主一个大大的点赞支持一下,你们的支持是我更新的最大动力!

如果觉得作者写的不错,求给博主一个大大的点赞支持一下,你们的支持是我更新的最大动力!

如果觉得作者写的不错,求给博主一个大大的点赞支持一下,你们的支持是我更新的最大动力!

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/393396.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Mac软件打开提示:已损坏,无法打开。您应该将它移到废纸娄 怎么解决?

新入手的苹果电脑打开软件出现:“已损坏,无法打开。您应该将它移到废纸娄” 或 “已损坏,打不开。推出磁盘映像”。这个怎么解决? 第一部分:(注意:任何来源打开过了的,就直接去看下…

医用软管用双轴测径仪 外径与椭圆度的双重检测!

摘要:软管的一大特点就是容易产生形变,接触式测量稍施压力可能导致测量不准,因此非接触式的高精高速测径仪被广泛的应用于生产中。 关键词:双轴测径仪,医用软管测径仪,软管测径仪,测径仪,软管外径测量仪 引言 非接触式的外径测量仪…

山西电力市场日前价格预测【2024-02-18】

日前价格预测 预测说明: 如上图所示,预测明日(2024-02-18)山西电力市场全天平均日前电价为347.21元/MWh。其中,最高日前电价为535.89元/MWh,预计出现在07:45。最低日前电价为165.05元/MWh,预计…

数据分析 — 动画图 pyecharts

目录 一、概念二、安装和导入三、绘图逻辑四、绘图1、柱状图2、折线图3、散点图4、饼图5、南丁格尔图6、Geo() 地理坐标第7、Map() 绘制区域8、词云图9、层叠图10、3D 图11、仪表板 一、概念 Pyecharts 是一个基于 Echarts 的 Python 可视化库,它通过 Python 生成 …

【动态规划】【C++算法】2742. 给墙壁刷油漆

作者推荐 【数位dp】【动态规划】【状态压缩】【推荐】1012. 至少有 1 位重复的数字 本文涉及知识点 动态规划汇总 LeetCode2742. 给墙壁刷油漆 给你两个长度为 n 下标从 0 开始的整数数组 cost 和 time ,分别表示给 n 堵不同的墙刷油漆需要的开销和时间。你有…

差异表达分析和PPI网络图构建

原文链接:差异分析和PPI网路图绘制教程 写在前面 在原文中,作者获得285个DEG,在此推文中共获得601个DEG。小杜的猜想是标准化的水段不同的原因吧,或是其他的原因。此外,惊奇的发现发表医学类的文章在附件中都不提供相…

【MySQL】学习多表查询和笛卡尔积

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-N8PeTKG6uLu4bJuM {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

vue自定义指令(图文示例)

第085个 查看专栏目录: VUE 本文章目录 示例效果图示例源代码API 参考网址 Vue 自定义指令是一种用于扩展 Vue 模板功能的强大工具。通过自定义指令,你可以在 Vue 模板中添加自定义的行为和逻辑,使模板更加灵活和可定制。 以下是对 Vue 自定义指令的详细…

基于springboot车辆充电桩管理系统源码和论文

随着信息化时代的到来,管理系统都趋向于智能化、系统化,车辆充电桩管理系统也不例外,但目前国内仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大,人工管理显然已无法应对时代的变化,…

线程池如何知道一个线程的任务已经执行完成

一个小伙伴私信了一个小米的面试题,问题是: “线程池如何知道一个线程的任务已经执行完成”? 说实话,这个问题确实很刁钻,毕竟像很多工作 5 年多的小伙伴,连线程池都没用过,怎么可能回答出来这个…

2024.02.18作业

1. 使用fgets统计给定文件的行数 #include <stdio.h> #include <stdlib.h> #include <string.h>int main(int argc, char const *argv[]) {if (argc ! 2){puts("input file error");puts("usage:./a.out filename");return -1;}FILE* f…

【论文阅读笔记】Contrastive Learning with Stronger Augmentations

Contrastive Learning with Stronger Augmentations 摘要 基于提供的摘要&#xff0c;该论文的核心焦点是在对比学习领域提出的一个新框架——利用强数据增强的对比学习&#xff08;Contrastive Learning with Stronger Augmentations&#xff0c;简称CLSA&#xff09;。以下…

黑猫带你学NandFlash第5篇:NAND的封装与引脚定义

本文依据ONFI5.1及个人工作经验整理而成&#xff0c;如有错误请留言。 文章为付费内容&#xff0c;已加入原创侵权保护&#xff0c;禁止私自转载及抄袭。 文章所在专栏&#xff1a;《黑猫带你学&#xff1a;NandFlash详解》 1 封装类型 spec中规定nand封装尺寸有以下几种&…

.螺旋矩阵

54. 螺旋矩阵 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,3,6,9,8,7,4,5]示例 2&#xff1a; 输入&#xff1a;ma…

【FastAPI】P1 安装与第一个 FastAPI 应用

目录 FastAPI 安装第一个 FastAPI 应用代码拆解分析 FastAPI 安装 FastAPI 是用于快速构建 API 的 web 框架&#xff0c;依赖 Python 3.8 及更高版本。使用 pip 命令安装 fastapi&#xff1a; pip install fastapi安装异步处理 ASGI 的服务器 Uvicorn&#xff1a; pip insta…

HAL STM32通过multi_button库处理按键事件

HAL STM32通过multi_button库处理按键事件 &#x1f4cd;作者&#xff1a;0x1abin的multi_button库:https://github.com/0x1abin/MultiButton &#x1f4d8;MultiButton简介 MultiButton 是一个小巧简单易用的事件驱动型按键驱动模块&#xff0c;可无限量扩展按键&#xff0c;…

分享一个学英语的网站

名字叫&#xff1a;公益大米网​​​​​​​ Freerice 这个网站是以做题的形式来记忆单词&#xff0c;题干是一个单词&#xff0c;给出4个选项&#xff0c;需要选出其中最接近题干单词的选项。 答对可以获得10粒大米&#xff0c;网站的创办者负责捐赠。如图 触发某些条件&a…

解锁Spring Boot中的设计模式—05.策略模式:探索【策略模式】的奥秘与应用实践!

1.策略者工厂模式&#xff08;Map版本&#xff09; 1.需求背景 假设有一个销售系统&#xff0c;需要根据不同的促销活动对商品进行打折或者其他形式的优惠。这些促销活动可以是针对不同商品类别的&#xff0c;比如男装、女装等。 2.需求实现 活动策略接口&#xff1a;定义了…

Docker数据卷容器(容器继承)

Docker数据卷容器&#xff08;容器继承&#xff09; 创建DockerFile构建镜像启动容器修改数据卷创建子容器验证 命名的容器挂载数据卷。其他容器通过挂载这个容器实现数据共享&#xff0c;挂载数据的容器 -> 称之为数据卷容器 创建DockerFile FROM centosVOLUME ["dat…

哪个牌子的洗地机好用?性能超好的洗地机推荐

洗地机已经是家庭中不可或缺的清洁家电之一了&#xff0c;它的出现极大地方便了我们的生活&#xff0c;并为我们解决了一大难题&#xff1a;洗地板的繁琐。无论是家庭主妇还是上班族&#xff0c;对于洗地机的需求都是无可替代的。随着科技的不断进步&#xff0c;洗地机的功能也…