Java线程系列——线程的各个属性

2020-02-27  本文已影响0人  禺沫
线程各属性概览.png

线程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());
    }
}

运行结果:

主线程的ID:1
子线程的ID:11

不是说Id是自增的么。那么从2开始到10的线程Id都给了谁呢?Debug可以看到,创建了Finalizer,Reference Handler, Signal Dispatcher等。可见,除了我们自己创建的线程,JVM帮我们做了很多事情,也创建了很多线程。

线程名字

系统会给Thread自动分配名字,我们也可自己给线程起名字。

守护线程

给用户线程提供服务。看线程是否会阻止JVM的停止,如果是用户线程,线程没有运行完毕,JVM是不会停止的。而如果现在所有运行的线程都是守护线程,那么守护线程会和JVM一起停止工作,因为所守护的对象都没有了。

Java虚拟机,只有两种情况之一发生,程序才能结束:

守护线程有三个特性:

守护线程和普通线程的区别:
整体无区别,唯一区别在于是否影响JVM的离开。

常见问题:

线程优先级

  1. Java的优先级总共有10个级别,默认级别为5
  2. 程序设计不应该依赖于优先级:
上一篇下一篇

猜你喜欢

热点阅读