# 线程属性

  • id:

    • 线程唯一标识。自动生成。不允许修改。

  • name:

    • 线程的名字,可以自定义成有具体含义的名字,便于识别不同作用的线程。(可同名)

  • isDaemon:

    • 是否是守护线程。

    • true=守护线程,false=用户线程。

    • 当JVM中所有的线程都是守护线程,JVM将退出。

    • 具有代表性的线程: main线程:用户线程,gc线程:守护线程。

    • 子线程会默认继承父线程的这个属性。

    • 必须在调用start()之前设置这个属性,线程运行中设置线程守护属性会抛出异常。

  • priority

    • 线程优先级。

    • 优先级高的线程概率上会优先运行。并不可靠.

    • Java中的线程优先级有10个,默认是5,且子线程会继承父线程的优先级。

    • 不可靠:java中的线程优先级有10个,但是OS的线程优先级并不一定是10个,所以存在java中好几个优先级对应OS中的同一个优先级,不可靠。

      • 程序不应该依赖优先级。

      • 优先级一般默认设置成5即可。

# ID

  • 源码

    /* For generating thread ID */private static long threadSeqNumber;private void init(ThreadGroup g, Runnable target, String name,long stackSize, AccessControlContext acc,boolean inheritThreadLocals) {.../* Set thread ID */tid = nextThreadID();...}private static synchronized long nextThreadID() {return ++threadSeqNumber;}
  • 线程初始化方法init()会给线程设置id,该id通过被synchronized标记的nextThreadID()方法获取,id自增。

# NAME

  • 源码:

  • 如果没有指定线程的名称,则默认是"Thread-" + nextThreadNum()nextThreadNum()为线程安全的一个自增。

    private static synchronized int nextThreadNum() {return threadInitNumber++;}
  • 还可以通过thread.setName()设置线程名称。

# 代码演示

/*** @author 喜欢天文的pony站长* Created on 2020/6/16.*/
public class ThreadProperties {private static final Logger LOGGER = LoggerFactory.getLogger(ThreadProperties.class);public static void main(String[] args) {Thread mainThread = Thread.currentThread();Thread childThread = new Thread(() -> {try {TimeUnit.SECONDS.sleep(2L);} catch (InterruptedException e) {e.printStackTrace();Thread.currentThread().interrupt();}});//必须在start()之前设置线程的优先级//childThread.setDaemon(true);childThread.start();LOGGER.info("main线程的id:{}", mainThread.getId());LOGGER.info("子线程的id:{}", childThread.getId());LOGGER.info("main线程的名字:{}", mainThread.getName());LOGGER.info("子线程的名字(修改之前):{}", childThread.getName());childThread.setName("childThread-1");LOGGER.info("子线程的名字(修改之后):{}", childThread.getName());LOGGER.info("main线程是否是守护线程{}", mainThread.isDaemon());LOGGER.info("子线程线程是否是守护线程{}", childThread.isDaemon());//不能在线程运行过程中设置线程的优先级childThread.setDaemon(true);LOGGER.info("子线程线程是否是守护线程{}", childThread.isDaemon());}
}
  • 结果

Java多线程:线程属性相关推荐

  1. Java多线程——线程的优先级和生命周期

    Java多线程--线程的优先级和生命周期 摘要:本文主要介绍了线程的优先级以及线程有哪些生命周期. 部分内容来自以下博客: https://www.cnblogs.com/sunddenly/p/41 ...

  2. java多线程 线程安全_Java中的线程安全

    java多线程 线程安全 Thread Safety in Java is a very important topic. Java provides multi-threaded environme ...

  3. java多线程-线程的停止【interrupt】

    java多线程-线程的停止 文章目录 java多线程-线程的停止 线程停止的原理 如何正确停止线程 在普通情况下停止线程 代码展示 在阻塞情况下停止线程 代码展示 线程在每次迭代后都阻塞 代码展示 停 ...

  4. Java 多线程线程安全(面试概念解答二)

    Java 多线程线程安全 什么是线程安全? 为什么有线程安全问题? 线程安全解决办法? 同步代码块 同步函数 静态同步函数 多线程死锁 多线程的三大特性 原子性 可见性 有序性 Java内存模型 Vo ...

  5. JAVA --- 多线程 -- 线程的创建

    JAVA - 多线程 – 线程的创建 线程的概念: 说起线程,先说程序和进程,多任务的概念. 程序(program):是指令和数据的有序集合,本身没有任何运行的含义,是一个静态的概念. 进程(proc ...

  6. Java多线程-线程的创建(Thread类的基本使用)

    文章目录 一. 线程和Thread类 1. 线程和Thread类 1.1 Thread类的构造方法 1.2 启用线程的相关方法 2. 创建第一个Java多线程程序 3. 使用Runnable对象创建线 ...

  7. Java多线程-线程的同步与锁

    一.同步问题提出 线程的同步是为了防止多个线程访问一个数据对象时,对数据造成的破坏. 例如:两个线程ThreadA.ThreadB都操作同一个对象Foo对象,并修改Foo对象上的数据. package ...

  8. Java多线程 ——线程基础和锁锁锁

    Java多线程(一) 一.线程的定义 二.Synchronize线程同步 三.偏向锁.自旋锁.重量级锁 四.volatile关键字 4.1.普通变量运算的物理意义 4.2.有无解决的方案 4.3.vo ...

  9. 【Java系列】(四)Java多线程---线程安全

    前言: 记得大一刚学Java的时候,老师带着我们做了一个局域网聊天室,用到了AWT.Socket.多线程.I/O,编写的客户端和服务器,当时做出来很兴奋,回学校给同学们演示,感觉自己好NB,呵呵,扯远 ...

  10. Java多线程——线程池的饥饿现象

    概述 定长线程池的使用过程中会存在饥饿现象,也就是当多线程情况下,当池中所有线程都被占用后,被占用的线程又需要空闲线程去进行下一步的操作,此时又获取不到池中空闲的线程,此时就出现了饥饿现象. 示例 p ...

最新文章

  1. mysql查询有数据但返回null_mybaits sql查询有数据 映射时返回结果却是null 为什么呢求指导...
  2. Spring Boot 配置文件 yml与properties
  3. Spring AOP 本质(3)
  4. django-分页的演示
  5. 为什么要学Win32及Win32程序框架
  6. c语言上机考试设计题及答案,C语言程序设计基础上机考试一题目及参考答案.doc...
  7. C#与Java之比较
  8. 变频器22b系列说明书_变频器接电位器正确接法
  9. 别人问了个问题:有没有选择JAVA开发的设计文档
  10. jquery文档就绪函数
  11. Android11安装谷歌,Android 11正式版
  12. TCP/IP五层模型
  13. arcgis 属性表中起点终点创建线_一种GIS单线路网自动生成双线路网的方法与流程...
  14. 建瓯最坏的YARA - APT | 病毒检测 | 常用模块和字段
  15. antd提交表单_antd快速开发(Form篇)
  16. FIR滤波器窗口设计法和频率采样设计法
  17. 【机器学习】线性回归实战案例一:多元素情况下广告投放效果分析步骤详解
  18. 数据模型是什么,有哪些常见的分析方法? 财务、人力、运营等数据分析人士必看!(内附2000+套数据可视化模版)
  19. 插画师的配色灵感分享
  20. 为何 Linus 一个人就能写出这么强的系统?

热门文章

  1. 编程之美-饮料供货方法整理
  2. 同步文件,不需要密码
  3. 部署Rsync服务器-差异化数据同步
  4. IE开发人员工具之实用功能讲解
  5. Fedora 19配置心得
  6. 编解码:Base64编码在URL中的应用
  7. [WPF]WPF中材质制作——图片和矢量图之争
  8. 让Windows 2000/XP系统自动登陆
  9. Linux下多线程同步方式之互斥量,信号量,条件变量
  10. itchat爬取朋友圈签名制作词云