Thread -- 02 -- 线程的六种状态

原文链接:Thread – 02 – 线程的六种状态


相关文章:


通过 Thread 类的源码可知,线程有六大状态,分别是:NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED,现在让我们来看看它们的具体含义


  • NEW

    • 新生状态

    • 线程创建后,但尚未启动

  • RUNNABLE

    • 运行状态

    • 处于运行状态的线程,可能正在执行 (Running),也有可能等待着 CPU 为其分配执行时间 (Ready)

  • BLOCKED

    • 阻塞状态

    • 在程序等待进入同步区域的时候,线程将进入阻塞状态

    • 例如:当某个线程进入到 synchronized 修饰的方法或代码块后 (即该线程获取到了锁标记),其他想进入该方法或代码块的线程就只能等着,此时其他线程即处于阻塞状态

  • WAITING

    • 无限期等待状态

    • 处于无限期等待的线程,不会被分配 CPU 执行时间,需要被其他线程显示唤醒

    • 调用以下方法会让线程处于无限期等待状态

      • 调用了没有设置 Timeout 参数的 Object.wait() 方法

      • 调用了没有设置 Timeout 参数的 Thread.join() 方法

      • 调用了 LockSupport 工具类的 park() 方法

  • TIMED_WAITING

    • 限期等待状态

    • 处于限期等待状态的线程,在一定时间后会由系统自动唤醒

    • 调用以下方法会让线程处于限期等待状态

      • 调用了 Thread 类的 sleep() 方法

      • 调用了设置 Timeout 参数的 Object.wait() 方法

      • 调用了设置 Timeout 参数的 Thread.join() 方法

      • 调用了 LockSupport 工具类的 parkNanos() 方法

      • 调用了 LockSupport 工具类的 parkUntil() 方法

  • TERMINATED

    • 结束状态

    • 处于结束状态的线程,已经结束执行

    • 在一个终止的线程上调用 start() 方法,会报 IllegalThreadStateException 异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值