Java的六种线程状态
Java语言定义了6种线程状态,在任意一个时间点,一个线程只能有且只有其中的一种状态,这6种状态分别如下。
- 新建(New):创建后尚未启动的线程处于这种状态。
- 运行(Runable):Runable包括了操作系统线程状态中的Running和Ready,也就是处于此状态的线程有可能正在执行,也有可能正在等待着CPU为它分配执行时间。
- 无限期等待(Waiting):处于这种状态的线程不会被分配CPU执行时间,它们要等待被其他线程显式地唤醒。以下方法会让线程陷入无限期的等待状态:
- ● 没有设置Timeout参数的Object.wait()方法。
- ● 没有设置Timeout参数的Thread.join()方法。
- ● LockSupport.park()方法。
- 限期等待(Timed Waiting):处于这种状态的线程也不会被分配CPU执行时间,不过无须等待被其他线程显式地唤醒,在一定时间之后它们会由系统自动唤醒。以下方法会让线程进入限期等待状态:
- ● Thread.sleep()方法。
- ● 设置了Timeout参数的Object.wait()方法。
- ● 设置了Timeout参数的Thread.join()方法。
- ● LockSupport.parkNanos()方法。
- ● LockSupport.parkUntil()方法。
- 阻塞(Blocked):线程被阻塞了,“阻塞状态”与“等待状态”的区别是:“阻塞状态”在等待着获取到一个排他锁,这个事件将在另外一个线程放弃这个锁的时候发生;而“等待状态”则是在等待一段时间,或者唤醒动作的发生。在程序等待进入同步区域的时候,线程将进入这种状态。
- 结束(Terminated):已终止线程的线程状态,线程已经结束执行。
上述六种状态在遇到特定事件发生的时候将会相互转换,转换关系如下
Java的六种线程状态相关推荐
- Java的六种线程状态(不是五种)
网上的文章鱼龙混杂,对于Java到底几种线程状态?这个问题,根据<Java并发编程>这本经典的教材里提到的,是六种状态,不是很多文章中提到的五种状态.这些文章中所提到的是操作系统的五种状态 ...
- 【java笔记】线程状态
六种线程状态: NEW(新建): 线程刚被创建,但是并未启动,还没调用start方法 Runnable(可运行):线程可以在java虚拟机中运行 的状态,可能正在运行自己代码,也可能没有,这取决于操作 ...
- Java中的线程状态
参考:https://my.oschina.net/goldenshaw?tab=newest&catalogId=3277710 1 线程状态 Java中的线程一共有6种状态. 在某个时刻, ...
- (Java多线程)线程状态
文章目录 线程状态概述 Timed Wating(计时等待) Blocked(锁阻塞) Waiting无限等待 线程状态概述 在API中java.lang.Thread.State 这个枚举给了6种线 ...
- java 线程状态_浅析Java中的线程状态
一.线程的5种状态 众所周知,Java的线程状态有5种,分别对应上图中五种不同颜色,下面对这5种状态及状态间的转化做相应的解释: 1. 初始化状态:新建一个线程对象 2. 可运行状态:其他线程调用了该 ...
- java中线程的生命周期_Java中的线程生命周期– Java中的线程状态
java中线程的生命周期 Understanding Thread Life Cycle in Java and Thread States are very important when you a ...
- java 线程池 状态_【Java多线程】线程状态、线程池状态
线程状态: 线程共包括以下5种状态. 1. 新建状态(New)线程对象被创建后,就进入了新建状态.例如,Thread thread = new Thread(). 2. 就绪状态(Runnable)也 ...
- JAVA多线程及线程状态转换
转发:https://www.cnblogs.com/nwnu-daizh/p/8036156.html 以下内容整理自:http://blog.csdn.net/wtyvhreal/article/ ...
- java基础提升(二):多线程、线程安全、线程状态、等待唤醒机制、线程池
目录 一. 多线程 1.1并发与并行 1.2 线程与进程 1.3 创建线程类 1.3.1 方式一:继承Thread类 1.3.2 方式二:实现Runnable接口 1.3.3 Thread和Runna ...
最新文章
- 微信公众平台开发(十一) 功能整合
- 汉字转16进制java_java实现汉字转unicode与汉字转16进制实例
- python库datetime的使用
- webconfig的connectionStrings字段
- 如何在 Linux 最小化安装中设置互联网
- execl用宏查询mysql_关于EXCEL能否用宏直接连到oracle数据库然后取数据
- 【Leetcode | 】93. 复原IP地址
- 这个AI狠!能互译C++、Java和Python,以后只学一种编程就行吗
- java编程 队列_5.1、顺序队列(java实现)
- python 文件名随自变量变化_Python 求解自行车前后轮轨迹问题
- 正态分布下含绝对值的期望求解 -- 待验证
- c#利用反射Assembly 对类和成员属性进行操作
- UTC时间转北京时间原理与matlab代码
- 烽火通信力推SDN技术在网络中实现
- Java 发送邮件的几种方式
- 微信官方多端框架Donut可将小程序编译成 Android 以及 iOS 应用了
- Josh 的学习笔记之 Verilog(Part 4——RTL 概念与常用 RTL 建模)
- 高性能处理器架构与编程实验(基础实验2:openEuler系统环境实验)
- 亚马逊苹果手机数据爬取
- CS61A Lab 12
热门文章
- 华为卖车两天获3000辆订单,赶超蔚来或是第一个目标
- 用oFono来GPRS上网
- 路飞学城python电子书_路飞学城-Python开发集训-第一章
- 中信集团张波:信息化已经过去,数字化刚刚到来
- PhxPaxos源码分析:网络
- 论文|RecSys17-序列推荐模型 Translation-based Recommendation
- 【高德地图WEB开发】 入门篇(地图/搜索/经纬度/缩放层级)
- 【Gym 102222C --- Caesar Cipher】
- ROS工业机器人和工业自动化竞赛Agile Robotics for Industrial Automation Competition (ARIAC)
- mysql 存储过程写法