java 线程状态_Java线程的状态
A thread state. A thread can be in one of the following states:
NEW
刚实例化
A thread that has not yet started is in this state.RUNNABLE
A thread executing in the Java virtual machine is in this state.BLOCKED
A thread that is blocked waiting for a monitor lock is in this state.WAITING
A thread that is waiting indefinitely for another thread to perform a particular action is in this state.TIMED_WAITING
A thread that is waiting for another thread to perform an action for up to a specified waiting time is in this state.TERMINATED
A thread that has exited is in this state.
阻塞状态
- 阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止运行。知道线程进入就绪状态,才有机会转到运行状态。
- 阻塞的情况分三种
- 等待阻塞:运行的线程执行wait()方法,该线程会释放占用的所有资源,JVM会把该线程放入“等待池”中。进入这个状态后,是不能自动唤醒的,必须依靠其他线程调用notify()或notifyAll()方法才能被唤醒
- 同步阻塞:运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入“锁池”中。
- 其他阻塞:运行的线程执行sleep()方法或join()方法,或者发出了I/O请求时,JVM会把该线程置为阻塞状态。
sleep和wait的区别
sleep 没有释放锁,进去等待队列 TIME_WAITING 状态。等时间到了时候,再次进入ready状态,等待时间片就可以运行
sleep可以在任何地方调用。
wait 需要在实例方法中的同步块中执行,不能在静态发方法调用,因为wait是类Object的实例方法,wait调用后,会放弃对象锁,进入等待队列。等待调用notify/notifyAll方法后,会进入锁池(同步队列中),竞争到锁后,才进入runnable状态。
https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.State.htmldocs.oracle.comJava线程的6种状态及切换(透彻讲解)_Java_潘建南的博客-CSDN博客blog.csdn.net
java 线程状态_Java线程的状态相关推荐
- java 线程状态_JAVA线程漫谈:线程状态与状态转换解析
线程使用方式 JDK线程的顶层抽象是Runnable接口,本质上,线程相关的类都是基于Runnable和Thread实现类实现. JDK API级别有不同的创建线程的方式,但本质是还是基于Runnab ...
- java 线程状态_Java线程为何没有Running状态?我猜你不知道。
作者:国栋原文:https://my.oschina.net/goldenshaw/blog/705397 Java虚拟机层面所暴露给我们的状态,与操作系统底层的线程状态是两个不同层面的事.具体而言, ...
- java线程池返回线程状态_Java线程的不同状态
java线程池返回线程状态 介绍 在Java中,线程可以具有状态. Thread.State枚举定义Java线程可以具有的不同状态. 该枚举定义了以下值– 新 可运行 已封锁 等候 TIMED_WAI ...
- 线程打印状态_Java线程状态的转换
根据上面关于线程状态的介绍我们可以得到下面的线程状态转换图: BLOCKED与RUNNABLE状态的转换 我们在上面说到:处于BLOCKED状态的线程是因为在等待锁的释放.假如这里有两个线程a和b, ...
- java线程触发_java线程
线程. 状态 新建状态(New): 当用 new 操作符创建一个线程时, 例如 new Thread(r),线程还没有开始运行,此时 线程处在新建状态. 当一个线程处于新生状态时,程序还没有开始运行线 ...
- java 线程交互_java 线程交互之wait/notify
众所周知java支持多线程,有多线程就必然会存在多线程的交互,交互方式有多种,比如通过共享数据,或者通过提供的锁信号量等等,这里通过用wait以及notify实现线程交互. 要用好线程的wait和no ...
- java多线程抽奖_java 线程池、多线程并发实战(生产者消费者模型 1 vs 10) 附案例源码...
导读 前二天写了一篇<Java 多线程并发编程>点我直达,放国庆,在家闲着没事,继续写剩下的东西,开干! 线程池 为什么要使用线程池 例如web服务器.数据库服务器.文件服务器或邮件服务器 ...
- java中我爱你_Java线程学习(转)
编写具有多线程能力的程序经常会用到的方法有: run(),start(),wait(),notify(),notifyAll(),sleep(),yield(),join() 还有一个重要的关键字:s ...
- idea 线程内存_Java线程池系列之-Java线程池底层源码分析系列(一)
课程简介: 课程目标:通过本课程学习,深入理解Java线程池,提升自身技术能力与价值. 适用人群:具有Java多线程基础的人群,希望深入理解线程池底层原理的人群. 课程概述:多线程的异步执行方式,虽然 ...
- java 线程不足_Java 线程基础知识
wait() 和notify().notifyAll() 这三个方法用于协调多个线程对共享数据的存取,所以必须在 Synchronized 语句块内使用这三个方法,否则会抛出错 IllegalMoni ...
最新文章
- redmine mysql配置_Redmine安装指南一:railsinstaller+apache+mysql(推荐)
- Obtain a Permutation(思维)
- mysql 图片转为二进制_php 图片转为二进制数据的方法
- CALayer的属性和使用
- Vue中使用echarts图表插件
- Linux使用SSH上传下载文件,linux下用ssh上传,下载文件
- 「Leetcode」142.环形链表II:环找到了,那入口呢?
- arraylist 初始化_ArrayList 和 LinkedList 哪个更占空间?
- 瑞星服务器版序列号 2009,瑞星序列号2009 瑞星杀毒软件序列号和ID
- 调和方程(拉普拉斯方程)基本解和边界元方法的积分计算
- 如何把pdf转换成ezd_怎么把pdf文档转换成word
- 怎么把pdf用abobe转换成html,Adobe Acrobat:把网页转换为PDF
- Linux内核调试方法
- php 分布式事务 DTM (TCC模式和Saga模式的区别)
- 北京市高等教育英语听力计算机考试,北京市2018年高考英语听力机考问答
- Java工作流管理系统(activity6.0)
- MPU6050读取数据FIFO溢出问题
- 计算机休眠是打不开,电脑自动进入睡眠模式打不开是为什么
- 让人春分日 哈工科教100798.宇宙总统
- Windows 11 家庭版、专业版、企业版、教育版、SE 版之间的区别