java线程的6种状态

Java线程的6种状态包括:

  1. New(新建):新建一个线程对象,但这个对象还没有start();

  2. Runnable(运行):Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为"运行"。

    当线程对象的调用start()方法时,该线程就进入了可运行状态。

    该状态的线程位于可运行线程池中,等待被线程调度选中,获取CPU的使用权(还没获取),此时处于就绪状态(ready)。就绪状态的线程在获得CPU时间片后变为运行中状态。

  3. Blocked(阻塞):当线程获取锁失败时就会进入阻塞状态,被放到阻塞队列。等待获取锁成功的线程释放锁时会唤醒阻塞状态的线程,让他们重新争抢锁,争抢成功进入可运行状态。

  4. Waiting(等待):获取锁成功后,线程可能需要等待其他线程完成某个任务后才能继续执行。在这些情况下,可以使用 锁.wait() 方法来让线程进入等待队列。

    wait()方法,释放锁,并让线程进入等待队列。

    当其他线程完成某个任务时,可以锁.notify()随机唤醒一个等待队列中的线程,但不会释放锁,防止其他线程对本线程造成干扰。(该线程会进入阻塞状态)

    也可以锁.notifyAll()唤醒所有线程,并释放锁。

  5. Timed Waiting(计时等待):当线程在限定时间内等待另一个线程执行特定操作时的状态。

    方式1.wait(long timeout) 释放锁,可被notify唤醒。属于Object的方法,只能在同步代码块或者同步方法中使用。

    方式2.sleep(long millis) 不释放锁,不可被提前唤醒。属于Thread的方法,可以在任何地方使用

  6. Terminated(终止):当线程执行完毕或者因异常退出时的状态。

操作系统层面只会分为5种

阻塞,等待,计时等待,全都算是阻塞。
就绪 :当进程被分配到除了CPU以外所有必要的资源后,只要再获得CPU的使用权,就可以立即运行,并且其他资源也都准备好了,只差CPU资源的状态,就是就绪状态。
运行 :获取到了cpu资源。
阻塞 :进程因为某种原因,如:其他设备未就绪而无法继续执行,从而放弃CPU的状态称为阻塞状态;

相关推荐
微风中的麦穗12 分钟前
【MATLAB】MATLAB R2025a 详细下载安装图文指南:下一代科学计算与工程仿真平台
开发语言·matlab·开发工具·工程仿真·matlab r2025a·matlab r2025·科学计算与工程仿真
2601_9491465320 分钟前
C语言语音通知API示例代码:基于标准C的语音接口开发与底层调用实践
c语言·开发语言
开源技术31 分钟前
Python Pillow 优化,打开和保存速度最快提高14倍
开发语言·python·pillow
学嵌入式的小杨同学37 分钟前
从零打造 Linux 终端 MP3 播放器!用 C 语言实现音乐自由
linux·c语言·开发语言·前端·vscode·ci/cd·vim
毕设源码-朱学姐1 小时前
【开题答辩全过程】以 基于JavaWeb的网上家具商城设计与实现为例,包含答辩的问题和答案
java
mftang2 小时前
Python 字符串拼接成字节详解
开发语言·python
jasligea2 小时前
构建个人智能助手
开发语言·python·自然语言处理
kokunka2 小时前
【源码+注释】纯C++小游戏开发之射击小球游戏
开发语言·c++·游戏
C雨后彩虹3 小时前
CAS与其他并发方案的对比及面试常见问题
java·面试·cas·同步·异步·
云栖梦泽3 小时前
易语言开发从入门到精通:补充篇·网络编程进阶+实用爬虫开发·API集成·代理IP配置·异步请求·防封禁优化
开发语言