人生有各种状态,all the same,一个线程从创建到死亡,都处于创建、就绪、运行、阻塞、终止这5个状态中的某一种。
如图:
创建状态
在程序中new运算符创建了一个Thread类或者子类的实例化对象后,新的线程对象就处于“创建状态”。此时,它已经有了相应的空间,但还未对该线程分配任何资源,所以该线程还处于不可运行状态。
就绪状态
新线程对象建立后,如果要执行它,系统就要为这个线程分配系统资源。调用该线程的start()方法就可以完成资源分配。当线程启动时,线程进入就绪状态。此时,线程将进入线程队列排队,等待CPU服务,这表明它已经具备运行条件了,一旦它获得CPU等资源时,就可以脱离创建它的主线程而独立运行。
运行状态
当就绪状态的线程被调用并获得CPU等资源时,便进入了运行状态。此时会自动调用该线程对象的run()方法。
阻塞状态
一个正在执行的线程在某些情况下,如被人为挂起或需要执行耗时的输入/s输出操作时,将让出CPU并暂时停止自己的执行,以后还可以恢复运行的状态称为阻塞状态。在执行状态下,如果发生以下情况之一,线程进入了阻塞状态。
A) 调用了该线程的sleep()休眠方法
B) 调用了该线程的wait()休眠方法
C) 调用了该线程的suspend()休眠方法
D) 该线程正在等待I/O流操作完成
终止状态
如果一个线程在可执行的状态下,运行run()方法完成后或调用stop()或destroy()方法,就表明线程进入了终止状态(死亡状态),处于这种状态的线程不具有继续运行的能力。
关于线程状态就先到此为止!