线程的生命周期
- 新建 :new关键字创建了一个线程之后,该线程就处于新建状态。jvm为线程分配内存,初始化成员变量值。
- 就绪:当线程对象调用了start()方法之后,该线程就处于就绪状态。jvm为线程创建方法栈和程序计数器,等待线程调度器调度。
- 运行:获得CPU资源后开始运行run()方法,进入运行状态。
- 阻塞:当发生如下状况时,线程将会进入阻塞状态:
- 线程调用sleep()方法主动放弃所占用的处理器资源
- 线程调用了阻塞式IO方法,在方法返回之前,线程处于阻塞状态。
- 线程试图获取一个同步锁,但该同步锁正被其他线程占用。
- 线程在等待某个通知(notify)
- 调用线程的suspend()方法将线程暂时挂起,该方法容易导致死锁,应尽量避免使用。
- 死亡:线程会以如下三种方式结束进程,就术后就处于死亡状态。
- run()或call()方法执行完成,程序正常结束。
- 线程抛出一个未捕获的Exception或Error。
- 调用stop()方法来结束该线程,该方法容易导致死锁!尽量避免使用!