面试必备-线程状态

操作系统中线程的生命周期

  1. 创建:新创建了一个线程对象。
  2. 就绪:该状态的线程位于可运行线程池中,等待被线程调度选中,获取 cpu 的使用权 。
  3. 运行:可运行状态的线程获得了 cpu 时间片 ,执行程序代码。
  4. 阻塞:阻塞状态是指线程因为某种原因放弃了 cpu 使用权,也即让出了 cpu ,线程暂时停止运行。
  5. 死亡:线程执行结束,或者因为异常中断线程,则该线程结束生命周期。

Java底层源码线程的状态

  1. NEW:尚未启动的线程的线程状态

  2. RUNNABLE:线程可运行状态。在可运行状态的线程在Java虚拟机正在执行,但它可以从操作系统,诸如处理器在等待其他资源。

  3. BLOCKED:线程的阻塞状态,等待监视器锁。 处于阻塞状态的线程正在等待监视器锁进入同步块/方法或调用后重新进入同步块/方法

  4. WAITING:线程永久等待状态。 在等待状态的线程正在等待另一个线程来执行特定动作。 例如,一个已调用的 Object.wait() 的对象上正在等待另一个线程在该对象上调用 Object.notify() 或 Object.notifyAll() 。 已调用的 Thread.join(A线) 正在等待指定线程终止。
    因为调用下列方法之一:
    (1)Object.wait不带超时参数
    (2)Thread.join不带超时参数
    (3)LockSupport.park

  5. TIMED_WAITING:线程限时等待状态。
    线程是在定时等待状态由于调用与指定正等待时间以下方法之一:
    (1)Thread.sleep
    (2)Object.wait带超时参数
    (3)Thread.join带超时参数
    (4)LockSupport.parkNanos
    (5)LockSupport.parkUntil

  6. TERMINATED:线程终止状态。 线程执行完毕。

面试常问

1. 线程的创建方式?

线程创建方法

2.说一说线程的生命周期

方法1:回答操作系统的五种状态
方法2:根据线程底层源码来分析的话,线程有六种状态,回答JAVA的六种状态的线程

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值