1.新建(产生)
创建出一个线程,此时该线程什么都没做;
2.就绪(可执行)
调用start()方法,注意,此时线程并没有真正运行,只是通知CPU自己可以被执行了,真正开始运行还是要看CPU的调度,也就是说,两个线程A和B,A先调用了start()方法,B后调用了,但是结果可能B线程却先运行了;
3.运行
即线程获得了CPU的时间,真正运行了
4.阻塞
所谓阻塞,就是正在运行的线程被中断(暂停)了,暂时让出CPU的时间资源,给其他就绪的线程执行;
最常见的让线程进入阻塞状态:Thread.sleep();
5.死亡
线程死亡就意味着该线程结束了,一般线程进入死亡状态有两种情况:
一是该线程执行完毕,进入自然死亡;
二是线程内未处理的异常导致线程中断死亡;
一般检查线程是否死亡是用isAlive()方法。