当前位置:网站首页>线程三连鞭之“线程的状态”
线程三连鞭之“线程的状态”
2022-08-04 23:21:00 【小洪正在努力】
一:线程有哪些状态?
- 新生:NEW
- 运行:RUNNABLE
- 阻塞:BLOCKED
- 等待:WAITING
- 超时等待:TIMED_WAITING
- 终止:TERMINATED
二:线程的基本概念,图形理解以及状态间的关系

- 新建(new):新建线程对象。
- 可运行(runnanble):线程对象创建后,其他线程(比如main线程)调用了该对象的start( )方。该状态的线程位于可运行线程池中,等待被线程调度选中,获得CPU的使用权。
- 运行(running):可运行状态(runnable)的线程获得CPU时间片,执行程序代码。
- 阻塞(blocked):阻塞状态是线程因为某种原因放弃了CPU的使用权,暂时停止运行,知道线程进入可运行状态(runnable)才有机会再次获得CPU分配的时间片进入运行状态(running)。
- 死亡(dead):线程run( ), main( )方法执行结束,或者因为异常推出了run( )方法,则该线程结束生命周期。
阻塞的情况分三种:
① 同步阻塞:获得同步锁时,该锁被别的线程占用,JVM会把该线程放进锁池中。
②其他阻塞:调用了sleep( )或者join( )方法。JVM 会把该线程置为阻塞状态。当 sleep ()状态超时、 join ()等待线程终止或者超时、或者 I /O 处理完毕时,线程重新转入可运行( runnable )状态。
③等待阻塞:执行wait( )方法,JVM会把该线程放入等待队列进入Waiting状态,等待其他线程notify通知唤醒。
边栏推荐
猜你喜欢

【七夕快乐篇】Nacos是如何实现服务注册功能的?

【内存操作函数内功修炼】memcpy + memmove + memcmp + memset(四)

golang打开文件和读写文件

【游戏建模模型制作全流程】使用ZBrush制作骷髅王

未来我们还需要浏览器吗?(feat. 枫言枫语)

Qt中的常用控件

Go 语言快速入门指南:什么是 TSL 安全传输层

kernel hung_task死锁检测机制原理实现

PID Controller Improvement Notes No. 7: Improve the anti-overshoot setting of the PID controller

【手撕AHB-APB Bridge】~ AMBA总线 之 AHB
随机推荐
Shell expect real cases
软件测试技术之如何编写测试用例(4)
Shell expect 实战案例
生产者消费者问题
Nuclei(二)进阶——深入理解workflows、Matchers和Extractors
kernel问题定位手段总结
uniapp横向选项卡(水平滚动导航栏)效果demo(整理)
未来我们还需要浏览器吗?(feat. 枫言枫语)
VC bmp文件总结
Laravel 实现redis分布式锁
PID Controller Improvement Notes No. 7: Improve the anti-overshoot setting of the PID controller
Community Sharing|Tencent Overseas Games builds game security operation capabilities based on JumpServer
panic: reflect: reflect.Value.SetString using value obtained using unexported field
The role of @Async annotation and how to implement asynchronous listening mechanism
现在学习次世代3D游戏建模还能找到高薪好工作吗
情人节---快来学习一下程序员的专属浪漫吧
golang打开文件和读写文件
node中package解析、npm 命令行npm详解,node中的common模块化,npm、nrm两种方式查看源和切换镜像
4-《PyTorch深度学习实践》-反向传播
Vscode连接远程服务器(一套配置成功)