新
当我们使用new运算符创建一个新的Thread对象时,线程状态是New Thread。此时,线程不活动,它是Java编程内部的状态。
可运行
当我们在Thread对象上调用start()函数时,它的状态被更改为Runnable。控制权被赋予Thread调度程序以完成它的执行。是否立即运行此线程或在运行之前将其保留在可运行的线程池中,取决于线程调度程序的OS实现。
运行
当线程正在执行时,它的状态将更改为Running。线程调度程序从可运行的线程池中选择一个线程,并将其状态更改为Running。然后CPU开始执行该线程。线程可以将状态更改为Runnable,Dead或Blocked从运行状态取决于时间切片,线程完成run()方法或等待某些资源。
阻塞/等待
一个线程可以等待其他线程使用线程连接完成,或者它可以等待一些资源可用。例如,生产者消费者问题或服务员通知程序实现或IO资源,然后它的状态更改为等待。一旦线程等待状态结束,它的状态就会变为Runnable,并且它会被移回可运行的线程池。
死
一旦线程执行完毕,它的状态就会变为Dead,并且它被认为不存在。
以上是线程的不同状态。知道它们以及线程如何改变它的状态是很好的。这就是java中线程生命周期的全部内容。