您的位置:首页 > 其它

线程的生命周期和状态

2017-03-11 15:38 141 查看
线程的五个状态:新建、就绪、运行、阻塞、死亡。

新建状态:当使用new来新建一个线程时、该线程就处于新建状态,和其它JAVA中的对象没有区别,JVM为其分配内存。

就绪状态:当线程调用了start方法后,该线程就处于就绪状态。JVM为其创建方法调用栈和程序计数器,处于这个状态的线程并没有开始运行,只是表示这个线程可以运行了,至于什么时候运行,由JVM中的线程调度决定。

运行状态:如果处于就绪状态的线程获得了CPU,开始执行run方法中的线程执行体,那么该线程就处于运行状态。

阻塞状态:当发生如下情况,线程将进入阻塞状态:1、线程调用sleep方法主动放弃所占用的处理器资源。2、线程调用了一个阻塞式IO方法,在方法返回之前,该线程被阻塞。3、线程试图获得一个同步监视器,但该同步监视器被其他线程所持有。4、线程在等待某个通知。5、程序调用了线程的suspend方法将该线程挂起(易导致死锁)。如果以上的问题解决了,线程将进入就绪状态,而不是直接进入运行状态。

死亡状态:以下情况,线程处于死亡状态:1、run()或call()方法执行完成,线程正常结束。2、线程抛出一个未捕获的Exception或Error。3、直接调用该线程的stop()方法来结束该线程(易导致死锁)。注:线程死亡就是死亡,不能重新被再次执行,也不要重新调用该线程的start方法,将会抛出IllegalThreadStateException。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: