1 线程属性
1.1 ID
/**
* @Description ID从1开始,JVM运行起来后,自己创建的线程的ID早已不是2
* @Author tzb
* @Date 2021/2/16 18:10
* @Version 1.0
**/
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());
}
}
1.2 线程名字
1.2.1 默认线程名字源码分析
- 用 synchronized修饰,不会出现线程重名
1.2.2 修改线程名字
- 0 表示最开始线程还没有启动的时候
1.3 守护线程
- 作用:给用户线程提供服务
3个特性:
1.3.1 守护线程和普通线程的区别
1.3.2 常见面试题
整体没有区别,区别在于是否影响JVM的退出以及作用不同。用户线程是执行逻辑的,守护线程是服务于我们的。
- 是否需要给线程设置为守护线程?
不应该把自己的线程设置为守护线程。比如如果自己的线程正在访问文件,JVM发现只剩下守护线程了,会关闭JVM,导致操作的中间被强行的终止,所以就会出现不一致。
1.4 线程优先级
2 线程属性总结
3 面试问题
3.1 何时需要守护线程
通常情况下不需要设置,JVM提供的守护线程足够使用
3.2 如何应用线程优先级帮助程序运行
不应该用线程优先级
3.3 不同操作系统如何处理优先级问题
不同操作系统对不同的优先级调度不一样