【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() {@Overridepublic 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() {@Overridepublic 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还没有@Overridepublic void run() {try {Thread.sleep(1000);   //sleep一秒} catch (InterruptedException e) {throw new RuntimeException(e);}}}, "自定义线程名称");System.out.println(t.isAlive());   //falset.start();    //start后,才真正在内核中创建出pcbSystem.out.println(t.isAlive());   //trueThread.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

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

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

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

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Arduino程序简单入门

文章目录 一、结构1.1 setup()1.2 loop() 二、结构控制2.1 if2.2 if...else2.3 switch case2.4 for2.5 while2.6 do...while2.7 break2.8 continue2.9 return2.10 goto 三、扩展语法3.1 ;(分号)3.2 {}(花括号)3.3 //(单…

百度地图接口 | 实现校验收货地址是否超出配送范围

目录 1. 环境准备 2. 代码开发 2.1 application.yml 2.2 OrderServiceImpl 🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发、数据结构和算法,初步涉猎Py…

数据结构-双指针法

介绍 双指针法是一种可以在O(n)时间复杂度内解决数组、链表、字符串等数据结构相关的问题的方法。核心思想为使用两个指针在不同位置遍历数组或链表,从而实现特定操作。 常见的双指针法有 1.快慢指针:快指针每次移动两步&…

AI:131- 法律文件图像中的隐含信息挖掘与敲诈勒索检测

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的关键代码,详细讲解供…

天锐绿盾|防泄密系统|计算机文件数据\资料安全管理软件

“天锐绿盾”似乎是一款专注于防泄密和计算机文件数据/资料安全管理的软件。在信息安全日益受到重视的今天,这样的软件对于保护企业的核心数据资产和防止敏感信息泄露至关重要。 通用地址:www.drhchina.com 防泄密系统的主要功能通常包括: 文…

[前端开发] 常见的 HTML CSS JavaScript 事件

代码示例指路 常见的 HTML、CSS、JavaScript 事件代码示例 常见的 HTML CSS JavaScript 事件 事件HTML 事件鼠标事件键盘事件表单事件 JavaScript 事件对象事件代理(事件委托) 事件 在 Web 开发中,事件是用户与网页交互的重要方式之一。通过…

LeetCode405. Convert a Number to Hexadecimal

文章目录 一、题目二、题解 一、题目 Given an integer num, return a string representing its hexadecimal representation. For negative integers, two’s complement method is used. All the letters in the answer string should be lowercase characters, and there …

二进制和进制转换

前言 我们经常能听到2进制、8进制、10进制、16进制这样的讲法,那是什么意思呢?其实2进制、8进 制、10进制、16进制是数值的不同表示形式而已。 比如:数值15的各种进制的表示形式: 15的2进制:111115的8进制&#xff1…

阅读笔记(BMSB 2018)Video Stitching Based on Optical Flow

参考文献 Xie C, Zhang X, Yang H, et al. Video Stitching Based on Optical Flow[C]//2018 IEEE International Symposium on Broadband Multimedia Systems and Broadcasting (BMSB). IEEE, 2018: 1-5. 摘要 视频拼接在计算机视觉中仍然是一个具有挑战性的问题&#xff0…

完成端口的看法

很早之前使用过完成端口,当时觉得是很不错的技术。但是后来发现用的地方并不多,对它也有些自己的想法,仁者见仁智者见智。 应用场景上, 个人觉得,iocp有些鸡肋,一般的应用用不上,复杂的程序…

wps使用方法(包括:插入倒三角符号,字母上面加横线,将word中的所有英文设置为time new roman)

倒三角符号 字母上面加横线 将word中的所有英文设置为time new roman ctrla选中全文

语音唤醒——

文章目录 配置主代码 参考文档:https://picovoice.ai/docs/quick-start/porcupine-python/ 配置 pip install pvporcupine主代码 ACCESS_KEY:需要将该参数填入即可 # # Copyright 2018-2023 Picovoice Inc. # # You may not use this file except in …

人机协同中的感应与响应

人机协同中的感应与响应是指人与机器之间的互动过程中,机器对人的动作、行为、情感等进行感知,并根据这些感知信息作出相应的反应。感应是指机器能够通过传感器、摄像头等设备感知到人的动作、语音、表情等信息,将其转化为数字信号或数据&…

MySQL事务的概念

一、事务定义 事务:事务是一个最小的不可在分的工作单元;通常一个事务对应一个完整的业务(例如银行账户转账业务,该业务是一个最小的工作单元)一个完整的业务需要批量的DML(insert、update、delete)语句共同联合完成。事务只和DML语句有关&a…

Java基于微信小程序的医院挂号小程序,附源码

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

Jenkins 2.426.3新版设置中文

1. 插件页面显示无法联网 ,点击Plugins一直提示连接超时,设置公司代理后 2. 稍等一会儿点击如下图,插件就出来了,然后输入Locale进行下载 3. 以下是我下载安装好的 4.打开设置,找到Locale选项,设置成zh_CN…

第13章 网络 Page738~741 13.8.3 TCP/UDP简述

libcurl是C语言写成的网络编程工具库,asio是C写的网络编程的基础类型库 libcurl只用于客户端,asio既可以写客户端,也可以写服务端 libcurl实现了HTTP\FTP等应用层协议,但asio却只实现了传输层TCP/UDP等协议。 在学习http时介绍…

305_C++_定义了一个定时器池 TimerPool 类和相关的枚举类型和结构体

头文件:定义了一个定时器池 TimerPool 类和相关的枚举类型和结构体 #ifndef TIMERPOOL_H #define TIMERPOOL_H #include "rsglobal.h" #include "taskqueue.h" #incl

【IO流】FileOutputStream 字节输出流

FileOutputStream 字节输出流 1. 概述2. 作用3. 书写步骤4. 构造方法5. 换行写6. 续写7. 注意事项 1. 概述 FileOutputStream 是 Java 中用于向文件写入字节数据的输出流类。它用于创建一个文件输出流,该流用于将数据写入文件。 功能:FileOutputStream …

C高级D5作业

1.#!/bin/bash read -p "请输入一个字符>>" -n 1 c echo case $c in [[:lower:]]) echo "小写" ;; [[:upper:]]) echo "大写" ;; [1-9]) echo "数字" ;; …