【Kill Thread Part.1-6】一网打尽线程属性
- 什么时候我们需要设置守护线程?
- 我们应该如何应用线程优先级来帮助程序运行?有哪些禁忌?
- 不同操作系统如何处理优先级问题
一、线程各属性概览
二、线程各个属性
1、线程ID
从小到大
/**
* 描述: ID从1开始,JVM运行起来后,我们自己创建的线程的ID早已不是2.
*/
public class Id {
public static void main(String[] args) {
Thread thread = new Thread();
System.out.println("主线程的ID"+Thread.currentThread().getId());
System.out.println("子线程的ID"+thread.getId());
}
}
2、线程名字
三、守护线程
作用:给用户线程提供服务
当用户线程结束了,JVM运行停止,守护线程负责给用户线程提供服务。
特性:
- 线程类型默认继承自父线程
- 被谁启动(通常而言都是由JVM启动的)
- 不影响JVM的退出
和普通线程的区别:
- 整体上没什么区别
- 唯一区别在于JVM的离开
四、线程优先级
10个级别,默认为5
程序设计不应该依赖于优先级:
- 不同操作系统对于优先级的理解不一样
- 优先级会被操作系统改变
- 可能导致线程被饿死