线程的生命周期
来源:互联网 发布:linux obj 编辑:程序博客网 时间:2024/06/06 16:54
线程生命周期介绍
线 程 具 有 生 命 周 期 , 其 中 包 含 出 生 状 态 、 就 绪 状 态 、 运 行 状 态 、 等 待 状 态 、 休 眠 状 态 、 阻 塞 状 态 和 死 亡 状 态 7 种 状 态 。
出 生 状 态 就 是 用 户 在 创 建 线 程 时 处 于 的 状 态 , 在 用 户 使 用 该 线 程 实 例 调 用 start()方 法 之 前 线 程 都 处 于 出 生 状 态 ;
一 旦 线 程 进 入 可 执 行 状 态 , 它 会 在 就 绪 与 运 行 状 态 下 辗 转 , 同 时 也 有 可 能 进 入 等 待 、 休 眠 、 阻 塞 或 死 亡 状 态 。
当 处 于 运 行 状 态 下 的 线 程 调 用 Thread 类 中 的 wait() 方 法 时 , 该 线 程 处 于 等 待 状 态 , 进 入 等 待 状 态 的 线 程 必 须 调 用 Thread 类 中 的notify()方 法 才 能 被 唤 醒 , 而 notifyAll() 方 法 是 将 所 有 处 于 等 待 状 态 下 的 线 程 唤 醒 ;
当 线 程 调 用 Thread 类 中 的 sleep() 方 法 时 , 则 会 进 入 休 眠 状 态 。
如 果 一 个 线 程 在 运 行 状 态 下 发 出 输 入 / 输 出 请 求 , 该 线 程 将 进 入 阻 塞 状 态
, 在 其 等 待 输 入 / 输 出 结 束 时 线 程 进 入 就 绪 状 态 ,
对 于 阻 塞 的 线 程 来 说 , 即 使 系 统 资 源 空 闲 , 线 程 依 然 不 能 回 到 运 行 状 态 : 当 线 程 的 run() 方 法 执 行 完 毕 时 ,线 程 进 入 死 亡 状 态 。
描 述 了 线 程 生 命 周 期 中 的 各 种 状 态 的图。
虽 然 多 线 程 看 起 来 像 同 时 执 行 , 但 事 实 上 在 同 一 时 间 点 上 只 有 一 个 线 程 被 执 行 , 只 是 线 程 之 间 切 换 较 快 , 所 以 才 会 使 人 产 生 线 程 是 同 时 进 行 的 假 象 。在 Windows 操 作 系 统 中 , 系 统 会 为 每 个 线 程 分 配 一 小 段 CPU 时 间 片 , 一 旦 CPU 时 间 片 结 束 就 会 将 当 前 线 程 换 为 下 一 个 线 程 , 即 使 在 该 线 程 没 有 结 束 的 情 况 下 。
总 结 出 使 线 程 处 于 就 绪 状 态 有 以 下 几 种 可 能 。
〖 调用sleep()方法
〖 调 用 wait() 方 法 。
〖 等 待 输 入 / 输 出 完 成 。
当 线 程 处 于 就 绪 状 态 后 , 可 以 通 过 以 下 几 种 方 式 使 线 程 再 次 进 入 运 行 状 态 。
〖 线 程 调 用 notify() 方 法 ·
〖 线 程 调 用 notifyAll() 方 法 。
〖 线 程 调 用 interrupt()方 法 。
〖 线 程 的 休 眠 时 间 结 束 。
〖 输 入 / 输 出 结 束 。
- 线程--线程的生命周期
- 线程的生命周期---线程死亡
- 线程的生命周期
- 线程的生命周期
- 线程的生命周期
- 线程的生命周期、
- 线程的生命周期
- 线程的生命周期
- JAVA线程的生命周期
- 线程的生命周期
- 线程的生命周期、
- 线程的生命周期
- Java线程的生命周期
- 线程的生命周期
- 线程的生命周期
- 线程的生命周期
- 线程的生命周期
- 线程的生命周期
- pyhton 类-对象
- 提示框
- iframe监听鼠标点击事件
- hibernate QueryPlanCache引发的heap区内存溢出
- Maven Assembly插件介绍
- 线程的生命周期
- Node.js 实现爬虫(3) —— 保存爬取的数据
- 打造平台产品的经验----《启示录》
- 如何利用Windows自带calc计算机进行取模运算
- MySQL--操作简记(汇总数据(聚集函数),分组数据,子查询)
- eclipse配置黑色主题
- UITableVIewCell中webView设置高度问题
- Kafka异常处理(客户端和消费者都找不到topic)
- springmvc初始化过程