Java线程,由运行状态转换成阻塞状态的原因,以及从阻塞状态转换成就绪状态

1、当线程试图获取某个对象的同步锁时,如果,该锁被其他线程所持有,则当前线程会进入阻塞状态,如果,想从阻塞状态进入就绪状态,必须得获取到其他线程所持有的锁

2、当线程调用了一个阻塞式的IO方法时,该线程就会进入阻塞状态,如果,向进入就绪状态,就必须要等到这个阻塞的IO方法返回

3、当线程调用了某个对象的wait()方法时,也会使线程进入阻塞状态,如果,向进入就绪状态,就需要使用notify()方法唤醒该线程

4、当线程调用了Thread的sleep(long millis)方法时,也会使线程进入阻塞状态,在这种情况下,只需等到线程睡眠的时间到了以后,线程就会自动进入就绪状态

5、当一个线程中,调用了另一个线程的join()方法时,会使当前线程进入阻塞状态,在这种情况下,需要等到新加入的线程运行结束后,才会结束阻塞状态,进入就绪状态

注意
线程从阻塞状态,只能进入就绪状态,而不能直接进入运行状态,也就是说,结束阻塞的线程,需要重新进入可运行池中,等待系统的调度

Java线程的状态转换相关推荐

  1. java线程主要状态及转换_Java线程状态转换及控制

    线程的状态(系统层面) 一个线程被创建后就进入了线程的生命周期.在线程的生命周期中,共包括新建(New).就绪(Runnable).运行(Running).阻塞(Blocked)和死亡(Dead)这五 ...

  2. java线程的状态及状态间的切换

    在 Java 5 以后,线程状态被明确定义在其公共内部枚举类型 java.lang.Thread.State 中. 分别是: 1.        NEW(初始化状态) 2.        RUNNAB ...

  3. 线程的状态转换、sleep()、wait()、yeild()、终止线程的方法、线程之间的协作(join()、wait() notify() notifyAll()、await() signal() )

    1.线程的状态转换 1.1 新建(New) 创建后尚未启动 1.2 可运行(Runnable) 可能正在运行,也可能正在等待 CPU 时间片. 包含了操作系统线程状态中的 Running 和 Read ...

  4. 一张图弄懂java线程的状态和生命周期

    转载自 一张图弄懂java线程的状态和生命周期 上图是一个线程的生命周期状态流转图,很清楚的描绘了一个线程从创建到终止的过程. 这些状态的枚举值都定义在java.lang.Thread.State下 ...

  5. Java线程池状态判断源码_深入浅出Java线程池:源码篇

    前言 在上一篇文章深入浅出Java线程池:理论篇中,已经介绍了什么是线程池以及基本的使用.(本来写作的思路是使用篇,但经网友建议后,感觉改为理论篇会更加合适).本文则深入线程池的源码,主要是介绍Thr ...

  6. JAVA线程六种状态_Java:线程的六种状态及转化

    多线程概述及创建方式 Java:线程的六种状态及转化 关于线程的生命周期,网上书上说法不一,难以统一,本篇做一个总结: java.lang.Thread.State枚举类中定义了六种线程的状态,可以调 ...

  7. Java 线程的状态

    线程状态简介   经典的线程五态模型,有五种状态:创建.就绪.执行.阻塞.终止.   而 Java 的线程状态分为了六种状态:NEW.RUNNABLE.BLOCKED.WAITING.TIMED_WA ...

  8. Java多线程基础学习,Thread解读、java线程的状态、同步和异步、两阶段终止模式

    理论概述 单线程和多线程 为什么要使用多线程呢?多线程有什么好处呢? 如果在程序中,需要读写一个文件,该文件很大,那我们执行到该io操作时,cpu就会等待该io操作执行完才会继续运行下面的代码,进程调 ...

  9. java 线程池 状态_【Java多线程】线程状态、线程池状态

    线程状态: 线程共包括以下5种状态. 1. 新建状态(New)线程对象被创建后,就进入了新建状态.例如,Thread thread = new Thread(). 2. 就绪状态(Runnable)也 ...

最新文章

  1. 『报告』IDC:2018年物联网产业10大预测
  2. JNLP(jar包签名)
  3. Endnote如何一键更改参考文献?
  4. 利用JDBC连接Oracle数据库
  5. npm install对本地工程文件造成了哪些修改
  6. @value 静态变量_面试官:为什么静态方法不能调用非静态方法和变量?
  7. MVC下实现LayUI分页的Demo
  8. 仿小黄车android定位,小黄车ofo是怎么实现自行车定位功能的?
  9. 深度解析开源推荐算法框架EasyRec的核心概念和优势
  10. 【转】Qt中的QString,QByteArray,Qchar, char*
  11. xcode5 ios7 64位 iphone5s引用第三方库报错的解决办法
  12. 【答辩问题】计算机专业本科毕业设计答辩问题
  13. 场论 梯度 旋度 散度
  14. GitHub桌面版的下载安装及使用
  15. 在网站中接入 客服QQ
  16. 微信小程序,高德地图
  17. 报销差率费与会计借贷理解
  18. 中联医疗系统服务器,中联医学影像系统(PACS)
  19. Flutter web 滚动循环 title(Flutter Web端 滚动显示浏览器标签页名)
  20. Android零基础入门第1节:Android的前世今生

热门文章

  1. 1231 最优布线问题
  2. bzoj1452: [JSOI2009]Count
  3. linux网络编程二十:socket选项:SO_RCVTIMEO和SO_SNDTIMEO
  4. 最大子序列求和_最大子序列和问题
  5. mysql主从复制 drbd_MySql主从复制简单案例实现
  6. 预训练模型:BERT深度解析《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》
  7. C++ Primer 5th笔记(chap 19 特殊工具与技术)运行时类型识別RTTI
  8. C++ Primer 5th笔记(chap 16 模板和泛型编程)成员模板
  9. (chap6 Http首部) 请求首部字段 If-Modified-SinceIf-None-Match If-RangeIf-Unmidified-Since
  10. 区块链预言机(4)内在机制