先说结论:
Java线程中一共有6种状态 , 分别为:NEW、RUNNABLE、WAITING、TIMED_WAITING、BLOCKED、TERMINATED , 其中RUNNABLE包含READY和RUNNING状态 , 详情可见下图:
- NEW:new一个Thread对象 , 但没有调用start方法前 , 线程处于初始状态
- RUNNABLE:在Java中包括两种状态 , RUNNING和READY
- READY:就绪态 , 该状态下的线程已经获得执行所需的所有资源 , 只要CPU分配执行权就能运行;所有就绪态的线程存放在就绪队列中
- RUNNING:获得cpu时间片 , 正在执行的线程;由于每个cpu同一时刻只能执行一条线程 , 因此每个cpu每个时刻只有一条线程运行 。
- BLOCKED:阻塞态 , 当线程请求锁失败时 , 就会进入阻塞态 , 一旦请求成功就会进入就绪队列等待cpu调度;所有阻塞态的线程存放在阻塞队列中
- WAITING:等待态 , 当运行中的线程调用wait、join、park函数时 , 当前线程进入等待态;所有等待线程放入等待队列;等待状态的线程需要被其他线程唤醒才能继续运行;进入等待状态会释放cpu时间片 , 以及资源(一般指锁)
- TIMED_WAITING:超时等待态 , 当运行中的线程调用sleep(time)、wait(time)、parkNanos、parkUtil时会进入超时等待态;和等待态的区别就是 , 超时之后会加入到阻塞队列中去 。
- Java|?大牛证券|带货1751亿!“短视频第一股”一季报亮点纷呈
- javascript|“内卷之王”来了!Redmi Note11T Pro手机用2大创新4大优势折桂
- Java|红米K40S比荣耀X30更好吗?
- Java|新一代智能工厂丨数字化设备管理,提供设备管理新途径
- Java|苹果王炸六月来临!iOS16,苹果智能眼镜,全新 Mac 全要来
- Java|腾讯新闻为什么没落了?
- Java|比12400F游戏性能更强,价格还便宜,618选性价比i5别错过这款
- Java|Java 后端开发常考面试题有哪些?
- Java|学习完的java学习资料300集~知识点大全,面试题想学的兄弟拿走
- Java|前十城市JAVA工资和房价对比:上海JAVA工程师买1㎡要花4个月工资