JAVA线程状态(New、Runnable、Blocked、Waiting、Timed waiting、Terminated)

本文详细介绍了Java线程的六种状态:New、Runnable、Blocked、Waiting、Timed waiting和Terminated。从线程创建到执行、阻塞、等待和终止的整个过程,阐述了各种状态下线程的行为特征,帮助理解线程生命周期及其转换机制。重点讨论了阻塞、等待和计时等待状态的区别,并提到了中断机制在线程管理中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java线程状态概述

在Java中,JVM线程可以有如下 6 种状态(仅JAVA内的状态,不是操作系统OS的状态)
  • New (新创建
  • Runnable (可运行
  • Blocked (被阻塞
  • Waiting (等待中
  • Timed waiting (计时等待
  • Terminated (被终止

具体见图(图来源:Java Thread states and life cycle UML protocol state machine diagram example - new, runnable, timed waiting, waiting, blocked, terminated.

Protocol state machine example - Thread states and life cycle in Java.

New新创建

    创建一个Thread对象,但还未调用start()启动线程时,线程处于初始态。

Runnable可运行

在Java中,可运行态包括:Ready 和 Running

  • Ready就绪态
    • 该状态下的线程已经获得执行所需的所有资源,CPU只要分配执行权就能运行。
    • 所有就绪态的线程存放在就绪队列中。
  • Running运行中
    • 已获得CPU执行权,正在被CPU执行的线程。
    • 由于一个CPU同一时刻只能执行一条线程,因此每个CPU每个时刻只有一条运行态的线程。
    • 可以通过yield放弃CPU执行(例如在非抢占式操作系统中,需要由正在执行的线程主动放弃CPU)

Blocked被阻塞

    注意是被动语态,当一条正在执行的线程请求某一资源失败时,就会进入阻塞态。

  • 而在Java中,阻塞态专指请求锁失败时而被迫进入的状态。 (通常:锁、IO、Socket等都资源。但在这里仅涉及锁)
  • 由一个阻塞队列存放所有阻塞态的线程。
  • 处于阻塞态的线程会不断请求资源,一旦请求成功,就会进入Runnable-Ready就绪队列,等待执行。

Waiting等待中

  • 当前线程中调用wait、join、park函数时,当前线程就会进入等待态。
  • 也有一个等待队列存放所有等待态的线程。
  • 线程处于等待态表示它需要等待其他线程的指示才能继续运行。需要由其他线程唤醒。
  • 进入等待态的线程会释放CPU执行权,并释放资源(如:锁)

Timed wating计时等待

  • 当运行中的线程调用sleep(time)、wait、join、parkNanos、parkUntil时,就会进入该状态;
  • 它和等待态一样,并不是因为请求不到资源,而是主动进入。 
  • 进入该状态后释放CPU执行权 和 占有的资源。
  • 与等待态的区别:到了设定时间后可自动进入Runnable-Ready

Terminated 被终止

包括运行结束自然终止,或者没有捕获异常而终止。

-----------------------------------------------------------------------------------------------------------

另外:

   interrupt中断是一种机制,与这里的线程状态是不同层次的概念。 

  当对一个线程调用 interrupt 方法时,线程的中断状态将被置位。这是每一个线程都具有的 boolean 标志。每个线程都应该不时地检査这个标志(比如while循环), 以判断线程是否被中断。 但是, 如果线程被阻塞, 就无法检测中断状态。这是产生 InterruptedExceptioii 异常的地方。当在一个被阻塞的线程(调用 sleep 或 wait) 上调用 interrupt 方法时,阻塞调用将会被Interrupted Exception 异常中断。

  

   

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值