Java线程有五种状态:新建,就绪,运行,阻塞,销毁.
新建状态:
在程序中使用new Thread(...)即 使用Thread类构造方法创建了一个Thread类对象后,新的线程对象便处于新建状态。这时,操作系统 (这里是批JVM)为其有了相应的内存空间和资源,处于不可运行状态。
就绪状态:
新建线程对象后,调用Thread类的start()方法可以启动线程(注意不是run方法,直接调用run方法,那仍然在主线程中执行)。start()调用后代表线程进入就绪状态,也就是进入CPU调度队列排队,并立即运行。
运行状态:
处于就绪状态的线程被系统调度获得CPU执行机会,线程就进入了运行状态。此时执行的Thread对象的run()方法。run()方法定义了线程的操作和功能。
堵塞状态:
正在执行的线程在某些特殊情况下(程序自动调用sleep(),suspend(),wait()方法或等待某类资源如打印机,用户输入),这时会让出CPU并暂时中止自己的执行,进入堵塞状态。堵塞时,线程并没有进入队列,只有当引起堵塞的原因被消除后,线程才可以转入就绪状态.
销毁状态:
线程run()方法执行结束后或调用stop()方法时(不推荐)或,即处于销毁状态。
注意进行销毁状态的线程并不代表Thread类的对象也要销毁,Thread对象仍然按照JVM管理对象方式去管理对象的生命周期去管理,只有当没有任何其他对象引用时才销毁。