文章目录
生命周期5种状态

1.新建状态new(new创建线程,分配内存,初始化值)
当程序使用 new 关键字创建了一个线程之后,该线程就处于新建状态,此时仅由 JVM 为其分配内存,并初始化其成员变量的值。
2.就绪状态runnable(调用了start方法,创建方法调用栈和pc等待调度)
当线程对象调用了 start()方法之后,该线程处于就绪状态。Java 虚拟机会为其创建方法调用栈和程序计数器,等待调度运行。
3.运行状态running(获得了cpu,开始执行run方法)
如果处于就绪状态的线程获得了 CPU,开始执行 run()方法的线程执行体,则该线程处于运行状态。
yield方法回到runnable
4.阻塞状态blocked(放弃了cpu使用权,进入runnable)
1. 等待阻塞:object.wait等待阻塞放入等待队列(suspend/resume)
2.同步阻塞:同步锁被别的线程占用,jvm把线程放入锁池lock pool
3.其他阻塞:thread.sleep/t.join/io请求时
sleep状态超时,Join等待终止或超市,io处理完毕,线程会去可运行状态。