Java线程的状态转换
Java线程,由运行状态转换成阻塞状态的原因,以及从阻塞状态转换成就绪状态
1、当线程试图获取某个对象的同步锁时,如果,该锁被其他线程所持有,则当前线程会进入阻塞状态,如果,想从阻塞状态进入就绪状态,必须得获取到其他线程所持有的锁
2、当线程调用了一个阻塞式的IO方法时,该线程就会进入阻塞状态,如果,向进入就绪状态,就必须要等到这个阻塞的IO方法返回
3、当线程调用了某个对象的wait()方法时,也会使线程进入阻塞状态,如果,向进入就绪状态,就需要使用notify()方法唤醒该线程
4、当线程调用了Thread的sleep(long millis)方法时,也会使线程进入阻塞状态,在这种情况下,只需等到线程睡眠的时间到了以后,线程就会自动进入就绪状态
5、当一个线程中,调用了另一个线程的join()方法时,会使当前线程进入阻塞状态,在这种情况下,需要等到新加入的线程运行结束后,才会结束阻塞状态,进入就绪状态
注意
线程从阻塞状态,只能进入就绪状态,而不能直接进入运行状态,也就是说,结束阻塞的线程,需要重新进入可运行池中,等待系统的调度
Java线程的状态转换相关推荐
- java线程主要状态及转换_Java线程状态转换及控制
线程的状态(系统层面) 一个线程被创建后就进入了线程的生命周期.在线程的生命周期中,共包括新建(New).就绪(Runnable).运行(Running).阻塞(Blocked)和死亡(Dead)这五 ...
- java线程的状态及状态间的切换
在 Java 5 以后,线程状态被明确定义在其公共内部枚举类型 java.lang.Thread.State 中. 分别是: 1. NEW(初始化状态) 2. RUNNAB ...
- 线程的状态转换、sleep()、wait()、yeild()、终止线程的方法、线程之间的协作(join()、wait() notify() notifyAll()、await() signal() )
1.线程的状态转换 1.1 新建(New) 创建后尚未启动 1.2 可运行(Runnable) 可能正在运行,也可能正在等待 CPU 时间片. 包含了操作系统线程状态中的 Running 和 Read ...
- 一张图弄懂java线程的状态和生命周期
转载自 一张图弄懂java线程的状态和生命周期 上图是一个线程的生命周期状态流转图,很清楚的描绘了一个线程从创建到终止的过程. 这些状态的枚举值都定义在java.lang.Thread.State下 ...
- Java线程池状态判断源码_深入浅出Java线程池:源码篇
前言 在上一篇文章深入浅出Java线程池:理论篇中,已经介绍了什么是线程池以及基本的使用.(本来写作的思路是使用篇,但经网友建议后,感觉改为理论篇会更加合适).本文则深入线程池的源码,主要是介绍Thr ...
- JAVA线程六种状态_Java:线程的六种状态及转化
多线程概述及创建方式 Java:线程的六种状态及转化 关于线程的生命周期,网上书上说法不一,难以统一,本篇做一个总结: java.lang.Thread.State枚举类中定义了六种线程的状态,可以调 ...
- Java 线程的状态
线程状态简介 经典的线程五态模型,有五种状态:创建.就绪.执行.阻塞.终止. 而 Java 的线程状态分为了六种状态:NEW.RUNNABLE.BLOCKED.WAITING.TIMED_WA ...
- Java多线程基础学习,Thread解读、java线程的状态、同步和异步、两阶段终止模式
理论概述 单线程和多线程 为什么要使用多线程呢?多线程有什么好处呢? 如果在程序中,需要读写一个文件,该文件很大,那我们执行到该io操作时,cpu就会等待该io操作执行完才会继续运行下面的代码,进程调 ...
- java 线程池 状态_【Java多线程】线程状态、线程池状态
线程状态: 线程共包括以下5种状态. 1. 新建状态(New)线程对象被创建后,就进入了新建状态.例如,Thread thread = new Thread(). 2. 就绪状态(Runnable)也 ...
最新文章
- 『报告』IDC:2018年物联网产业10大预测
- JNLP(jar包签名)
- Endnote如何一键更改参考文献?
- 利用JDBC连接Oracle数据库
- npm install对本地工程文件造成了哪些修改
- @value 静态变量_面试官:为什么静态方法不能调用非静态方法和变量?
- MVC下实现LayUI分页的Demo
- 仿小黄车android定位,小黄车ofo是怎么实现自行车定位功能的?
- 深度解析开源推荐算法框架EasyRec的核心概念和优势
- 【转】Qt中的QString,QByteArray,Qchar, char*
- xcode5 ios7 64位 iphone5s引用第三方库报错的解决办法
- 【答辩问题】计算机专业本科毕业设计答辩问题
- 场论 梯度 旋度 散度
- GitHub桌面版的下载安装及使用
- 在网站中接入 客服QQ
- 微信小程序,高德地图
- 报销差率费与会计借贷理解
- 中联医疗系统服务器,中联医学影像系统(PACS)
- Flutter web 滚动循环 title(Flutter Web端 滚动显示浏览器标签页名)
- Android零基础入门第1节:Android的前世今生
热门文章
- 1231 最优布线问题
- bzoj1452: [JSOI2009]Count
- linux网络编程二十:socket选项:SO_RCVTIMEO和SO_SNDTIMEO
- 最大子序列求和_最大子序列和问题
- mysql主从复制 drbd_MySql主从复制简单案例实现
- 预训练模型:BERT深度解析《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》
- C++ Primer 5th笔记(chap 19 特殊工具与技术)运行时类型识別RTTI
- C++ Primer 5th笔记(chap 16 模板和泛型编程)成员模板
- (chap6 Http首部) 请求首部字段 If-Modified-SinceIf-None-Match If-RangeIf-Unmidified-Since
- 区块链预言机(4)内在机制