线程的生命周期

线程的生命周期可以简单看做是线程的生老病死,首先上图片:

New:新建状态

我们在类中新创建一个线程的时候,该线程就处于new状态,也就是调用start()方法之前线程所处的状态

Runnable:就绪状态

就绪状态包括:Ready状态和Running状态,Ready状态表示该线程可以被线程调度器调度执行,而Running状态表示该线程正在

被执行,使用Thread.yield()方法可以使线程状态由Running变成为Ready。

Blocked:阻塞状态

线程发起阻塞的I/O操作 ,或者申请有其他线程占用的独享资源,线程会转换为Blocked状态,处于阻塞状态的线程不会占用CPU资源,当阻塞I/O操作执行完成或者线程获得了其申请的资源,线程可以转换为Runnable状态。

Waiting:等待状态

线程执行了Object.wait()方法,thread.join()方法会把线程转换为Waiting等待状态,执行Object.notify()方法,或者加入的线程执行完毕,当前线程会转换为Runnable状态。

Time_Waiting:休眠状态

与Waiting状态类似,两者都是等待状态,区别在于处于该线程的状态不会无限制的等待下去,如果线程没有在指定的时间范围内执行完期望的操作,该线程会自动转换为Runnable状态。

Terminated:终止状态

该状态表示线程执行结束,处于终止状态。

另一篇关于线程的文章:学习多线程——必会的的9个方法   https://blog.csdn.net/qq_43655835/article/details/102576973

原文地址:https://www.cnblogs.com/wgty/p/12810491.html