一个线程一般有如下5个状态:
创建状态,就绪状态,运行状态,等待(阻塞或睡眠)状态和死亡状态。
1.创建状态:
实例化Thread对象,但没有调用start()方法时的状态。
例如:
Thread tt = new ThreadTest();
或者
Thread t = new Thread(tt);
此时,虽然创建了Thread对象,但是它们暂时不能通过isAlive()测试。
2.就绪状态:
线程有资格运行,但调度程序还没有把它选为运行线程时所处的状态。此时,线程具备了运行的条件,一旦被选中,就能马上运行。
线程创建后,调用了start()方法,线程不处于运行状态,但能通过isAlive()测试。而且在线程运行之后,或者从被则塞、等待或者睡眠状态回来之后,线程首先进入就绪状态。
3.运行状态:
从就绪状态池(注意不是队列,是池)中被选中为当前执行的线程所处的状态。
4.等待(阻塞或睡眠)状态:
线程依然活着,但是缺少运行的条件,一旦具备条件,就可以转为就绪状态(不能直接转为运行状态)。列外,suspend()和stop()方法已经被废弃了,比较危险,不要在使用了。
5.死亡状态:
一个线程的run()方法运行结束,那么该线程完成其使命,它的栈结构将解散,也就是死亡了。但是他仍然是一个Thread对象,仍可以被引用,这一点与其他对象一样,而且被引用的对象也不会被垃圾回收期回收。
一旦线程死去,它就不能重新启动了,也就是说,不能再用start()方法让他运行。