线程的生命周期概述
新建状态(New):当线程对象被创建后,即为新建状态
。如:Thread t = new MyThread();
就绪状态(Runnable):当调用线程对象的start()方法(t.start()),线程进入就绪状态
。线程进入就绪状态
,只是说明了线程已经做好准备了,随时等待CPU进行调度执行,即线程执行了start()方法并不一定开始执行。
运行状态(Running):当CPU开始调度处于就绪状态的线程时,此时线程才得以真正执行,即进入到运行状态。就绪状态是进入运行状态的唯一入口。
阻塞状态(Blocked):进入了运行状态的线程,由于某种原因放弃了对CPU的使用权,转入阻塞状态,直至再次进入到就绪状态,才有机会再次被CPU调用以进入运行状态。
根据阻塞的原因不同,分为:等待阻塞(wait()方法导致)、同步阻塞(获取synchronized锁失败)、其他阻塞(调用线程的sleep()或join()或发出了I/O请求)。
死亡状态(Dead):线程执行完了或因异常退出了run()方法,该线程结束生命周期。