- 线程的生命周期及五种基本状态
- JAVA线程具有五种基本状态
新建状态(new):使用new关键字实例化一个线程对象并未调用start()阶段,该阶段在堆内存中为该对象分配内存空间并且无法参与抢夺CPU的使用权。
就绪状态(Runnable):一个线程对象调用start()方法后,直到运行完run()方法的这个阶段,线程一旦就进入就绪阶段,java虚拟机为该线程创建方法的调用栈和计数器等。
备注:但凡处于就绪状态的线程都被视为活动状态,可以使用isAlive()方法查看线程是否处于就绪状态,使用activeCount()查询当前线程所在线程池的活动线程数,处于就绪状态的线程并不是运行状态(有参与抢夺CPU的使用权限)。
运行状态(Running):当CPU开始调度处于就绪状态的线程并执行线程的run()方法,此时线程才得以真正执行,即进入到运行状态。
备注:就绪状态是进入到运行状态的唯一入口,也就是说,线程要想进入运行状态执行,首先必须处于就绪状态中。
阻塞状态(Blocked):处于运行状态中的线程由于某种原因,暂时放弃对CPU的使用权,停止执行,此时进入阻塞状态



