线程生命周期

线程的生命周期

新建(New)
new Thread(); 当程序使用new关键字创建一个线程的后,该线程就是“新建”状态;此时,它与其他的java对象一样,仅仅由java虚拟机
为其分配了内存,并初始化了其成员变量值。此时的线程对象没有表现出热恩和的线程的动态特征,程序也不会执行
就绪(Runnable)
thread.start();当程序调用start()方法,该线程处于就绪状态,java虚拟机会为其创建“方法调用栈与程序计数器”;该状态的线程并
没有开始运行,而是表示该线程可以运行了,至于线程何时运行,取决于JVM中的线程调度器的调度
运行(Running)
处于就绪的线程获取到CPU的执行权,开始执行run()方法的执行体;
运行-->>阻塞Blocked
线程调用sleep方法主动放弃所占用的处理器资源
线程调用一个阻塞式的IO方法,在该方法返回之前,线程阻塞
尝试获取一个同步监视器,但该同步监视器正被其他线程锁持有
线程正在等待某个通知notify
线程调用了suspend方法将线程挂起(容易导致死锁)
阻塞(Blocked)
阻塞Blocked-->>就绪Runnable
线程调用sleep方法并指定时间
线程调用阻塞式的IO方法已经返回
线程获取了试图获取的同步监视器
线程等待notify时,其他线程发出了
死亡(Dead)
run()方法执行完毕
抛出一个未捕获的Exeception或Error
调用stop()方法

          参考:
https://www.cnblogs.com/keessi/p/7444263.html
原文地址:https://www.cnblogs.com/draymond/p/12316185.html