概括的解释下线程的几种可用状态
2017-09-25 15:18
169 查看
链接:https://www.nowcoder.com/questionTerminal/f665a4c853b841339e7181a0fdbacfa8 来源:牛客网 可以用早起坐地铁来比喻这个过程: 还没起床:sleeping 起床收拾好了,随时可以坐地铁出发:Runnable 等地铁来:Waiting 地铁来了,但要排队上地铁:I/O阻塞 上了地铁,发现暂时没座位:synchronized阻塞 地铁上找到座位:Running 到达目的地:Dead
链接:https://www.nowcoder.com/questionTerminal/f665a4c853b841339e7181a0fdbacfa8 来源:牛客网 1. 新建( new ):新创建了一个线程对象。 2. 可运行( runnable ):线程对象创建后,其他线程(比如 main 线程)调用了该对象 的 start ()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获 取 cpu 的使用权 。 3. 运行( running ):可运行状态( runnable )的线程获得了 cpu 时间片( timeslice ) ,执行程序代码。 4. 阻塞( block ):阻塞状态是指线程因为某种原因放弃了 cpu 使用权,也即让出了 cpu timeslice ,暂时停止运行。直到线程进入可运行( runnable )状态,才有 机会再次获得 cpu timeslice 转到运行( running )状态。阻塞的情况分三种: (一). 等待阻塞:运行( running )的线程执行 o . wait ()方法, JVM 会把该线程放 入等待队列( waitting queue )中。 (二). 同步阻塞:运行( running )的线程在获取对象的同步锁时,若该同步锁 被别的线程占用,则 JVM 会把该线程放入锁池( lock pool )中。 (三). 其他阻塞: 运行( running )的线程执行 Thread . sleep ( long ms )或 t . join ()方法,或者发出了 I / O 请求时, JVM 会把该线程置为阻塞状态。 当 sleep ()状态超时、 join ()等待线程终止或者超时、或者 I / O 处理完毕时,线程重新转入可运行( runnable )状态。 5. 死亡( dead ):线程 run ()、 main () 方法执行结束,或者因异常退出了 run ()方法,则该线程结束生命周期。死亡的线程不可再次复生。
相关文章推荐
- 概括的解释下线程的几种可用状态
- 概括解释线程的几种状态
- 解释线程的几种可用状态
- 牛客网Java刷题知识点之线程的几种可用状态(新建、可运行、运行、阻塞、死亡)
- 线程的几种可用状态及运行机制
- 浅谈线程的几种可用状态
- 线程的几种可用状态
- 线程有几种可用状态---郑州尚学堂
- 线程的几种可用状态
- java 线程的几种状态(转载)
- java 线程的几种状态
- 线程有几种状态
- Java 线程的几种状态
- hibernate简介(Session,几种状态,方法······等)概括全面,经典
- java 线程的几种状态
- 线程类Thread详解和线程的几种状态,守护线程
- java线程的几种状态
- 线程的几种状态
- 谈谈线程及线程的几种状态
- 线程的几种状态