Java创建一个线程发生的事情
1.分配线程栈
线程对象被创建后,JVM会分配一个独立的线程栈,用于存储该线程的方法调用、局部变量等。还有本地方法栈,用来调用本地方法栈服务。还有程序计数器,这个就是我们线程所执行字节码指示灯,分之循环跳转,还有我们的线程恢复都是通过这个实现的。
2.初始化线程的属性
设置线程的属性、例如优先级(CPU调度的时候使用),守护现场,线程组、昵称等。
3.调用start方法
当调用线程对象的start方法的时候,会出发jvm调用run方法,并且启动线程执行
4.启动线程阶段
JVM会在后台创建并启动一个操作系统线程来执行Java线程,每个java线程对应一个底层的操作系统线程。
5.线程的调度和执行
操作系统负责线程的调度,按照线程的优先级、时间片轮转算法等确定线程的执行顺序,
6.线程执行结束
当线程的业务方法执行完或者抛出一场导致执行种种就会进入终止状态。