1.线程的命名
1.1线程的默认命名
Thread()Thread(Runnable target)Thread(Thread Group group, Runnable target)
打开JDK的源码会看到下面的代码:
1.2.命名线程
Thread(Runnable target, String name)Thread(String name)Thread(Thread Group group, Runnable target, String name)Thread(Thread Group group, Runnable target, String name, long stackSize)Thread(Thread Group group, String name)

1.3 修改线程名称
2.线程的父子关系
一个线程的创建肯定是由另一个线程完成的。被创建线程的父线程是创建它的线程
3.Thread 与 ThreadGroup
样例代码:
main线程所在的Thread Group称为main。构造一个线程的时候如果没有显式地指定Thread Group, 那么它将会和父线程同属于一个Thread Group。
4.Thread 与 Runnable
Thread负责线程本身相关的职责和控制,Runnable则负责逻辑执行单元的部分
5.Thread与JVM虚拟机栈
5.1Thread与Stacksize
一般情况下, 创建线程的时候不会手动指定栈内存的地址空间字节数组, 统一通过xss参数进行设置即可, 通过上面这段官网文档的描述, 我们不难发现stacksize越大则代表着正在线程内方法调用递归的深度就越深, stacksize越小则代表着创建的线程数量越多, 当然了这个参数对平台的依赖性比较高,比如不同的操作系统、不同的硬件。
5.2JVM内存结构

6.守护线程
6.1什么是守护线程

设置守护线程的方法很简单, 调用set Daemon方法即可, true代表守护线程, false代表正常线程。线程是否为守护线程和它的父线程有很大的关系,如果父线程是正常线程,则子线程也是正常线程, 反之亦然, 如果你想要修改它的特性则可以借助set Daemon方法。is Daemon方法可以判断该线程是不是守护线程。另外需要注意的就是, set Daemon方法只在线程启动之前才能生效, 如果一个线程已经死亡, 那么再设置set Daemon则会抛出Illegal Thread State Exception异常。
6.2 守护线程的作用
守护线程经常用作与执行一些后台任务,因此有时它也被称为后台线程,当你希望关闭某些线程的时候, 或者退出JVM进程的时候, 一些线程能够自动关闭, 此时就可以考虑用守护线程为你完成这样的工作。
