Java线程的几种可用状态
1. 新建( new ):新创建了一个线程对象。
2. 可运行( runnable ):线程对象创建后,其他线程(比如 main 线程)调用了该对象 的 start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获 取 cpu 的使用权 。
3. 运行( running ):可运行状态( runnable )的线程获得了 cpu 时间片( timeslice ) ,执行程序代码。
4. 阻塞( block ):阻塞状态是指线程因为某种原因放弃了 cpu 使用权,也即让出了 cpu timeslice ,暂时停止运行。直到线程进入可运行( runnable )状态,才有 机会再次获得 cpu timeslice 转到运行( running )状态。阻塞的情况分三种:
(一). 等待阻塞:运行( running )的线程执行 o .wait ()方法, JVM 会把该线程放 入等待队列(waitting queue )中。
(二). 同步阻塞:运行( running )的线程在获取对象的同步锁时,若该同步锁 被别的线程占用,则 JVM 会把该线程放入锁池( lock pool )中。
(三). 其他阻塞: 运行( running )的线程执行 Thread . sleep ( long ms )或 t . join ()方法,或者发出了 I / O 请求时, JVM 会把该线程置为阻塞状态。 当 sleep ()状态超时、 join ()等待线程终止或者超时、或者 I / O 处理完毕时,线程重新转入可运行( runnable )状态。
5. 死亡( dead ):线程 run ()、 main () 方法执行结束,或者因异常退出了 run ()方法,则该线程结束生命周期。死亡的线程不可再次复生。
最新文章
- supervisor 安装、配置、常用命令
- thinkphp标签
- mysql导入导出数据库命令
- bzoj1487
- telnet查看memcached运行参数说明
- 快速构建Windows 8风格应用17-布局控件
- HDU 1883 Phone Cell(计算几何)
- android usb挂载分析
- 初学python之,IDLE安装
- sqlserver2008 触发器备份 20170811
- python2.7安装django1.8后提示django-admin.py命令不存在
- 深入学习Redis:Redis内存模型
- 2017-2018-2 165X 『Java程序设计』课程 团队项目备选题目
- (转)cenntos 安装mongodb
- 在Eclipse中运行Web项目Jsp网页时提示端口被占用的解决办法:Several ports (8005, 8888, 8009) required by Tomcat v9.0 Server at localhost are already in use.
- vue -resource 文件提交提示process,或者拦截处理
- Matlab绘制三维曲面(以二维高斯函数为例)
- 用jquery实现复选框全选全不选问题(完整版),在网络上怎么也找不到完整的解决方案,重要搞全了
- artDialog学习之旅(一)
- winphone开发环境配置
热门文章
- WFS: postgresql(postgis)和shp文件查询效率对比
- tp5.1 模型 where多条件查询 like 查询
- 微信小程序弹出层动画特效
- java中ThreadLocalRandom的使用
- vue2.x学习笔记(二十九)
- 解决从dockerhub上下载debian:jessie失败
- 二、Vue基础语法
- 14.在Python中lambda函数是什么
- 最简单,最明了,看了就会的VScode和C++的配置!(Visual Studio Code)
- 1秒内通关扫雷?他创造属于自己的世界记录!Python实现自动扫雷