Thread线程创建并启动之后,并不是立即进入执行状态,也不会一直处于执行状态,因为CPU在同一个时间点只能处理一个线程,多线程执行时,CPU需要在多个线程之间来回切换。
一个线程的生命周期分为创建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)五种状态。
创建:使用new关键字创建一个线程,Java虚拟机为其分配内存,初始化成员变量
就绪:线程对象调用start()方法之后,线程就处于就绪状态。但是此时并没有开始运行,只是在等待执行状态。至于何时运行,取决于JVM线程调度器。
运行:处于就绪状态的线程获得CPU之后,就会进入运行状态。但是不会一直执行,会被中断,目的是为了让其他线程获得执行的机会。
阻塞:线程放弃处理器资源,在合适的时候重新进入就绪状态,阻塞解除,等待线程调度器的调用。
死亡:线程结束,分为三种情况,一是run方法执行完毕,二是抛出了一个未被捕获的Exception或者Error,三是程序调用了线程的stop方法(易造成死锁)
注意,就绪状态和运行状态不受程序控制,由系统的线程调度器所决定。
关于线程Thread的几个方法