线程状态概述和等待唤醒案例分析
线程状态概述
线程状态 | 导致状态发生条件 |
NEW | 至今尚未启动的线程处于这种状态 |
RUNNABLE | 正在Java虚拟机中执行的线程处于这种状态 |
BLOCKED | 受阻塞并等待某个监视器锁的线程处于这种状态 |
WAITING | 无限期地等待另一个线程来执行某一特定操作的线程处于这种状态 |
TIMED_WAITING | 等待另一个线程来执行取决于指定等待时间的操作的先处于这种状态 |
TERMINATED | 已退出的线程处于这种状态 |
阻塞状态 :具有cpu的执行资格,等待cpu空闲时执行
休眠状态 :放弃cpu的执行资格,cpu空闲,也不执行
等待唤醒案例分析
wait:线程不再活动,不再参与调度,进入wait set中,因此不会浪费CPU资源,也不会去竞争锁了,这时的线程状态即时WAITING。
它还要等着别的线程执行一个特别的动作,也即是“通知(notify)”在这个对象上等待的线程从wait set中释放出来,重新进入到调度队列中
notify:选取所通知对象的wait set中的一个线程释放;例如,参观有空位后,等待就餐最久的顾客最先入座。
notifyAll:通知所有的由于使用这个同步方法而处于等待的线程结束等待。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix