
先说结论:
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|干翻小米,红米又出超大杯旗舰,120W+2K直屏+双旗舰芯
- 百度地图|Java程序员应知应会之Maven和Gradle的区别
- javascript|穿戴设备将迎变革,OPPO又增新专利,能提升模式切换效率!
- Java|Gamamobi CEO黄继德:我们的元宇宙游戏不担心体验落差
- Java|美国传来新消息,ASML态度也变了,这一切竟如此之快
- Java|李佳琦消失扯下阿里“遮羞布”,原来淘宝根本就没有护城河
- Java|我做公众号终于不亏钱了
- Java|微信转账时弹出“这行字”,别输付款密码,有人已经中招了
- Java|合肥恒泽冠雨讲坛:哪些方法能够快速输出抖音视频内容?
- Java|面向未来的高端轻薄本标杆!戴尔XPS 13 Plus是否值得选?
