Java多线程学习笔记-线程的状态
线程状态如图:一共有5种状态,新建(New),就绪(Runnable),运行(Running),阻塞(Blocked),死亡(Dead)
新建状态:在程序中一个线程对象被创建出来,例如:Thread t = new Thread()此时线程处于新建状态,线程中的代码还没有被执行;
就绪状态:顾名思义也就是说线程处于准备执行阶段,随时可以被cpu的调度。当调用该线程对象的toStart()方法时,该线程就进入了就绪状态,此时并不会立刻去执行run()方法,线程还必须同其他线程竞争CPU时间,只有获得CPU时间才可以运行线程。
运行状态:当线程获得CPU时间片后,它才进入运行状态,真正开始执行run()方法中的代码。有可能在时间片消耗完时,run()中的代码还没执行结束,此时线程又进入了Runnable状态,线程只能等待下个时间片被cpu调度,所以线程会处于Runnable,Running交替转换的过程;
阻塞状态:当线程在Running状态中,遇到以下情况,会导致线程进入阻塞状态(Blocked)。处于阻塞状态的线程,在阻塞等待结束之后,会进入Runnable状态,等待获得CPU时间片继续运行程序。
(1) 等待阻塞 -- 通过调用线程的wait()方法,让线程等待某工作的完成。
(2) 同步阻塞 -- 线程在获取synchronized同步锁失败(因为锁被其它线程所占用),它会进入同步阻塞状态。
(3) 其他阻塞 -- 通过调用线程的sleep()或join()或发出了I/O请求时,线程会进入到阻塞状态。当sleep()状态超时、join()(下篇学习)等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态。
死亡状态:当线程执行完了或者因异常退出了run()方法时,线程生命周期结束。
转载于:https://www.cnblogs.com/ldh666/p/10993860.html
Java多线程学习笔记-线程的状态相关推荐
- Java多线程学习笔记-线程的使用
Java中创建多线程的三种方法 1.继承Thread类创建线程 2.实现Runnable接口创建线程 3.使用Callable和Future创建线程 ------------------------- ...
- java多线程学习笔记。
java多线程学习笔记 线程的优缺点: 多线程的好处: 充分利用多处理核心,提高资源的利用率和吞吐量. 提高接口的响应效率,异步系统工作. 线程的风险: 安全危险(竞争条件):什么坏事都没有发生.在没 ...
- Java 多线程学习笔记
概念 进程 正在运行的程序,是系统进行资源分配和调用的独立单位 每一个进程都有它自己的内存空间和系统资源,一个进程包括由操作系统分配的内存空间,包含一个或多个线程 一个进程一直运行,直到所有的非守护线 ...
- 【JAVA多线程学习笔记】(1)实现线程的方式 线程生命周期 操作线程的方法
文章目录 两种方式实现线程 继承Thread类 模拟银行叫号的程序 Runnable接口 代码1:(与swing相结合创建gui程序) Thread类的⼏个常⽤⽅法 线程生命周期 操作线程的方法 代码 ...
- Java 多线程学习笔记(狂神)
学习视频参考链接:https://www.bilibili.com/video/BV1V4411p7EF?p=27 线程简介 线程的实现(重点) 线程状态 线程同步(重点) 线程通信问题 高级主题(重 ...
- Java多线程学习笔记一
一.关于多线程 Java中的多线程是一个同时执行多个线程的进程.线程是一个轻量级的子进程,是最小的处理单元.线程使用共享内存区域,不分配单独的内存区域以节省内存.Java多线程多用于游戏.动画方面. ...
- java多线程学习笔记--一.多线程的基础知识
需要学习的知识 多线程基础知识讲解 参考索隆和jim的视频,以及自己做的笔记 导读 为了充分利用CPU资源,人们发明了线程和进程 进程 由来:在单核cpu的时期,为了方便操作把一系列的操作的指令写下来 ...
- Java多线程学习笔记20之定时器Timer
详细代码见:github代码地址 本节内容: 定时器Timer的使用及分析 1) 如何实现指定时间执行任务 2) 如何实现按指定周期执行任务 第五章 定时器Timer 定时/计划功能在移动开发领域使用 ...
- Java多线程学习(二)---线程创建方式
线程创建方式 摘要: 1. 通过继承Thread类来创建并启动多线程的方式 2. 通过实现Runnable接口来创建并启动线程的方式 3. 通过实现Callable接口来创建并启动线程的方式 4. 总 ...
- java多线程学习笔记(一)
✟ "In my Father's house are many mansions: if it were not s ...
最新文章
- 报名 | IBM苏中:从深蓝到AlphaGo,从大数据到认知商业
- Java消息服务JMS详解
- target与currentTarget的区别?
- clustered index disadvantages in mysql
- php pdo预处理查询,关于php:从PDO预处理语句中获取原始SQL查询字符串
- 学习记录-交叉编译环境的设置
- 【CodeForces - 1082B】Vova and Trophies (贪心模拟,暴力)
- JSP 编译原理:JSP 是 Servlet?如何用 Eclipse 查看 JSP 编译生成的 Servlet 源文件?
- 大数据之-Hadoop完全分布式_RM启动注意事项---大数据之hadoop工作笔记0041
- 使用C#来手动连接 Access 2007数据库
- ab服务器网页,使用ab进行web服务器压测详解
- 数据:尽管严禁加密货币,中国拥有最多区块链专利
- 课外读物积累-----如何提高英文的科研写作能力(摘自施一公寄语)
- 管理咨询公司全球前22排名
- SQL SERVER 2019卸载和安装
- react点击后高亮显示
- 令人头大的慢查询分析
- RIP实验步骤(RNA Immunoprecipitation)
- HDU 4081 Qin Shi Huang‘s National Road System(枚举+倍增优化)
- 使用禅道系统工作任务明细指南
热门文章
- 总结的一些android公共库
- ul在Firefox和IE下的不同表现
- 用sqoop从mysql导数hive_使用sqoop从mysql导入到hive基本操作
- redis分布式锁的 5个坑
- java web 调度_javaweb车辆调度信息管理平台
- python文件目录提取_python-按日志提取文件并创建相关目录
- 上传文件实时显示网速怎么实现_“双11”来了!三亚1487个5G基站带你拼网速_政务_澎湃新闻...
- 7.监控应用和数据可视化 7.1通用健康状态指引器
- 【渝粤教育】国家开放大学2019年春季 1396药事管理与法规(本) 参考试题
- 【渝粤题库】陕西师范大学290001 计算机网络