下图展示了java中线程的状态图:
线程共包括以下状态:
1.新建状态(New):线程被创建后就处于新建状态,Thread thread = new Thread()
2.就绪状态(ready-to-run):线程创建后调用start()方法来启动该线程,处于就绪状态可以随时被CPU调度
3.运行状态(Running):线程获得CPU调度权限后进行执行,调用线程的yield()方法会回到就绪状态
4.阻塞状态(Blocked):线程失去了CPU执行权限,暂时停止运行,细分为以下三种情况
4.1.等待阻塞:调用对象的wait()方法,让线程等待某工作完成,调用对象的notify()、notifyAll()方法会回到就绪状态
4.2.同步阻塞:线程获取synchronized同步锁失败,获取锁后回到运行状态
4.3.其它阻塞:调用线程的sleep()、join()方法或发出IO请求时会进入到阻塞状态,调用对象的notify()、notifyAll()方法会回到就绪状态
5.死亡状态(Dead):线程执行完了或因异常退出了run()方法
参考:
http://www.cnblogs.com/skywang12345/p/3479024.html