线程共有5中状态:新建、可运行(runnable)、运行(running),阻塞和死亡。
当使用new操作符创建新线程时,线程处于“新建”状态。
当调用start()方法时,线程处于可运行状态。
阻塞状态是指线程因为某种原因放弃了cpu 使用权,即让出了cpu分片时间,暂时停止运行。直到线程进入可运行状态,才有机会再次获得cpu时间 转到运行状态。
阻塞的情况分三种:
(一). 等待阻塞:运行的线程执行o.wait()方法,JVM会把该线程放入等待队列中。
(二). 同步阻塞:运行的线程在获取对象的同步锁时,该锁正被其他线程拥有,则JVM会把该线程放入锁池(lock pool)中。
(三). 其他阻塞:运行的线程执行Thread.sleep(long ms)或t.join()方法,或者发出了I/O请求时,JVM会把该线程置为阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入可运行(runnable)状态。
当run()方法运行完毕或出现异常时,线程处于终止状态。



