<二>线程的运行
在讲线程的运行前,我不得不说说线程的运行过程的分析
1. 线程运行过程分析:
线程的运行主要分为四个过程:实例化对象-->就绪-->运行-->线程的结束。
a. 实例化对象:Thread t = new Thread();
b. 就绪:就是线程处于实例化到调用start(),线程还没有运行。
c. 运行:就是当线程调用start()方法后,线程开始执行。
d. 线程的结束:就是线程的run()方法运行结束。
2. 线程的几种状态
1)实例化:实例化Thread对象,但没有调用start()方法时的状态。
ThreadTest t = new ThreadTest(); 或者Thread t = new Thread (t);
此时虽然创建了Thread对象,如前所述,但是它们不是活的,不能通过isAlive()测试
2)就绪状态:线程还没资格运行,但调度程序还没有把它选为运行程序所处的状态。也就是具备了运行的条件,一旦被选中马上就能运行。
也就是调用start()方法后但没有运行的状态。此时虽然没有在运行,但是被认为是活的,能通过isAlive()的测试。而且在线程运行之后、或者被阻塞、等待或者休眠状态回来之后,线程首先进入就绪状态。
3)运行状态:从就绪状态到执行当前的进程是。
4)休眠、等待、阻塞状态:这3中状态,线程都是活的,只是缺少运行的条件,一旦满足条件,马上进入就绪状态(不能转为运行状态)。状态方法分别是sleep()、wait()、stop().一般stop()方法不使用。
5)死亡状态:当线程的run()方法运行结束,该线程就死亡,它的栈结构瓦解。该线程就不能再启动了。