操作系统-Java线程的几种基本状态?

本文详细介绍了Java线程的六种状态:新建、可运行、运行、阻塞、等待和超时等待、终止,并阐述了状态间的转换。线程在调用start()后进入可运行状态,等待CPU分配时间片执行。当线程调用wait()或进入同步块未获取锁时,会进入等待或阻塞状态。超时等待可通过sleep()或wait()指定时间限制。完成run()方法后,线程进入终止状态。

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

  • 状态名称说明
    new初始状态,线程被构建,但是还没有调用start()方法
    runnable运行状态,Java将 就绪态ready和运行态sunning 笼统的叫做运行中(被JVM隐藏了)
    blocked阻塞状态,表示线程阻塞于锁
    waiting等待状态,线程进入等待状态后需要等待其他线程做出一些特定动作(通知或中断)
    time_waiting等待超时状态,该状态不同于waiting,可以在指定的时间自行返回
    terminated终止状态,表示当前线程已经执行完毕
  • 线程创建之后它将处于 NEW(新建) 状态,调⽤ start() ⽅法后开始运⾏,线程这时候处于 READY(可运⾏) 状态。可运⾏状态的线程获得了 cpu 时间⽚(timeslice)后就处于 RUNNING(运 ⾏) 状态。

  • 当线程执⾏ wait() ⽅法之后,线程进⼊ WAITING(等待)状态。进⼊等待状态的线程需要依靠其他线 程的通知才能够返回到运⾏状态,⽽

  • TIME_WAITING(超时等待) 状态相当于在等待状态的基础上增加了 超时限制,⽐如通过 sleep(long millis) ⽅法或 wait(long millis) ⽅法可以将 Java 线程置于 TIMED WAITING 状态。当超时时间到达后 Java 线程将会返回到 RUNNABLE 状态。

  • 当线程调⽤同步⽅法 时,在没有获取到锁的情况下,线程将会进⼊到 BLOCKED(阻塞) 状态。线程在执⾏ Runnable 的 run() ⽅法之后将会进⼊到 TERMINATED(终⽌) 状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值