1) 新创建一个新的线程对象后,在调用它的start()方法,系统就会为此线程分配CPU的资源,是其处于Runnable(可运行)状态,这一个准备运行的阶段。若果线程强占到CPU资源,此线程就处于Running(运行)状态。
2) Runnable状态和Running转态可相互切换,因为有可能线程运行一段时间后,有其它优先级的线程抢占到了CPU资源,这是线程就从Running状态变化Runnable转态。
线程进入Runnable状态大体分为如下情况
A:调用sleep()方法后经过的时间超过了指定的休眠时间
B:线程调用的阻塞IO已经返回,阻塞方法执行完毕
C:线程成功地获得了视图同步的监视器
D:线程正在等待某个通知,其它线程发出来了通知
E:处于挂起转态的线程调用了resume恢复方法
3) Blocked阻塞,Blocked状态结束后,进入Runnable状态,等待系统重新分配资源。
出现Blocked状态大体分为如下情况
A:线程调用sleep()方法,主动放弃占用的处理器资源。
B:线程调用的阻塞IO方法,在该方法返回前,该线程被阻塞。
C:线程试图获得了一个视图同步的监视器,该同步监视器正被其他线程所持有。
D:线程正在等待某个通知。
E:程序调用suspend方法处于该方法将线程挂起,此方法容易导致死锁,尽量避免使用该方法。
4) run()方法运行结束后进入销毁阶段,整个线程执行完毕。