线程五种状态

线程五种状态如下:
  1. 新建new:创建后但是尚未启动的线程;
  2. 运行runnable:包括系统的running和ready状态,也就是此状态线程可能在执行,也可能在等待CPU为其分配执行时间
  3. 无线等待waiting,释放锁更不会分配cpu时间,等待持有同一锁对象的线程(或者Condition对象)唤醒。Object.wait()、Thread.join()、Condition.await()方法都会进入无线等待状态;
  4. 限期等待timed awaiting:不分配cup时间,但无需被其他线程显式的唤醒,一定时间后自动唤醒。Thread.sleep(int)不会释放锁,带有Timeout的wait()和join()会释放锁;
  5. 阻塞blocked:与等待的区别是,他在等待获取一个排他锁,比如方法调用另外一个synchronized方法,但是另外一个线程却持有锁对象;
  6. 结束 terminate:结束执行run方法。
状态转换图

线程的五种状态

posted on 2018-04-21 14:04  coderDu  阅读(1078)  评论(0编辑  收藏  举报