线程的生命周期及五种基本状态介绍
一.线程的生命周期及五种基本状态
关于Java中线程的生命周期,首先看一下下面这张较为经典的图:
上图中基本上囊括了Java中多线程各重要知识点。掌握了上图中的各知识点,Java中的多线程也就基本上掌握了。主要包括:
Java线程具有五中基本状态
新建状态(New):当线程对象对创建后,即进入了新建状态,如:Thread t = new MyThread();
就绪状态(Runnable):当调用线程对象的start()方法(t.start();),线程即进入就绪状态。处于就绪状态的线程,只是说明此线程已经做好了准备,随时等待CPU调度执行,并不是说执行了t.start()此线程立即就会执行;
运行状态(Running):当CPU开始调度处于就绪状态的线程时,此时线程才得以真正执行,即进入到运行状态。注:就 绪状态是进入到运行状态的唯一入口,也就是说,线程要想进入运行状态执行,首先必须处于就绪状态中;
阻塞状态(Blocked):处于运行状态中的线程由于某种原因,暂时放弃对CPU的使用权,停止执行,此时进入阻塞状态,直到其进入到就绪状态,才 有机会再次被CPU调用以进入到运行状态。根据阻塞产生的原因不同,阻塞状态又可以分为三种:
1.等待阻塞:运行状态中的线程执行wait()方法,使本线程进入到等待阻塞状态;
2.同步阻塞 -- 线程在获取synchronized同步锁失败(因为锁被其它线程所占用),它会进入同步阻塞状态;
3.其他阻塞 -- 通过调用线程的sleep()或join()或发出了I/O请求时,线程会进入到阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态。
死亡状态(Dead):线程执行完了或者因异常退出了run()方法,该线程结束生命周期。
线程的生命周期及五种基本状态介绍相关推荐
- JAVA线程的生命周期以及5种状态转换
一:线程的生命周期 新建状态(NEW):新创建一个线程对象. 就绪状态(RUNNABLE):线程对象创建后,调用该对象的start()方法.该状态的线程等待被线程调度选中,获取CPU的使用权. 运行状 ...
- java 线程僵死_线程的生命周期?什么时候会出现僵死进程?
线程的生命周期及五种基本状态 关于Java中线程的生命周期,首先看一下下面这张较为经典的图: 新建(new Thread) 当创建Thread类的一个实例(对象)时,此线程进入新建状态(未被启动).例 ...
- java main生命周期_Java从入门到入土(62)线程的生命周期
线程是程序内部的一个顺序控制流,他具有一个特定的生命周期.在一个线程的生命周期中,他总是处于某一种状态中.线程的状态表示了线程正在进行的活动以及在这段时间内线程能完成的任务. 线程的生命周期包括五个状 ...
- java -- 线程的生命周期
线程的生命周期 1.线程的生命周期线程是一个动态执行的过程,它也有一个从产生到死亡的过程. (1)生命周期的五种状态 新建(new Thread)当创建Thread类的一个实例(对象)时,此线程进入新 ...
- 图解 Java 线程的生命周期,看完再也不怕面试官问了
文章首发自个人微信公众号: 小哈学Java www.exception.site/java-concur- 在 Java 初中级面试中,关于线程的生命周期可以说是常客了.本文就针对这个问题,通过图文并 ...
- java线程的生命周期及wait(),notify(),notifyAll()的详解分析
1.java线程的生命周期 线程是一个动态执行的过程,它也有一个从产生到死亡的过程. (1)生命周期的五种状态 新建(new Thread) 当创建Thread类的一个实例(对象)时, ...
- 线程的生命周期以及java提供的方法
一.生命周期的五种状态 1.新建(new Thread) 当创建Thread类的一个实例(对象)时,此线程进入新建状态(未被启动). 例如:Thread t1=new Thread(); 2.就绪( ...
- Java并发编程:线程的生命周期是个怎样的过程?
前言 在日常开发过程中,如果我们需要执行一些比较耗时的程序的话,一般来说都是开启一个新线程,把耗时的代码放在线程里,然后开启线程执行.但线程是会耗费系统资源的,如果有多个线程同时运行,互相之间抢占系统 ...
- Java 多线程(三) 线程的生命周期及优先级
Java 多线程(三) 线程的生命周期及优先级 线程的生命周期 线程的生命周期:一个线程从创建到消亡的过程. 如下图,表示线程生命周期中的各个状态: 线程的生命周期可以分为四个状态: 1.创建状态: ...
最新文章
- Valid Sudoku leetcode java
- HTML中的link的简单介绍和用法
- tomcat中的几种log catalina localhost
- OpneCV3特征提取及匹配SURF算法(一)——SURF概述与代码演示
- 用JS实现发邮件的功能 完美解决
- 如何开启/关闭SMTP路由调试
- mysql跟memcache的区别_MySQL-mysql Memory Storage Engine 和memcache到底有何不同?各自的优缺点是什么?...
- python lxml xpath_Python/lxml/Xpath:如何找到包含特定文本的行?
- ESP32 开发之旅② Arduino For ESP32说明
- 《原力计划【第二季】》第 5 周周榜揭晓!!!
- 数据解决方案:原力大数据教你如何撰写数据分析报告
- 群体智能优化算法之总结
- php爬取金山词霸发音,php金山词霸api
- 如何制作一张3D复古拼贴海报 Part II
- springboot修改请求头
- 毕业论文字体字号格式要求
- abb机器人控制箱按键的作用_ABB机器人控制柜各个部件及作用介绍
- 美的智能家电搭载华为鸿蒙系统产品将大批量上市;蔡天乐将出任麦德龙中国总裁 | 美通企业日报...
- 腾讯企业邮箱api java_腾讯企业邮全新API,五大新接口上线_腾讯企业邮箱服务中心...
- 使用Python调用Nessus 接口实现自动化扫描