文档章节

JavaSE 学习参考:线程生命周期

博为峰教研组
 博为峰教研组
发布于 2017/03/23 11:30
字数 451
阅读 3
收藏 0

Java线程有五种状态:新建,就绪,运行,阻塞,销毁.

新建状态:

在程序中使用new Thread(...)即 使用Thread类构造方法创建了一个Thread类对象后,新的线程对象便处于新建状态。这时,操作系统 (这里是批JVM)为其有了相应的内存空间和资源,处于不可运行状态。

就绪状态:

新建线程对象后,调用Thread类的start()方法可以启动线程(注意不是run方法,直接调用run方法,那仍然在主线程中执行)。start()调用后代表线程进入就绪状态,也就是进入CPU调度队列排队,并立即运行。

运行状态:

处于就绪状态的线程被系统调度获得CPU执行机会,线程就进入了运行状态。此时执行的Thread对象的run()方法。run()方法定义了线程的操作和功能。

堵塞状态:

  正在执行的线程在某些特殊情况下(程序自动调用sleep(),suspend(),wait()方法或等待某类资源如打印机,用户输入),这时会让出CPU并暂时中止自己的执行,进入堵塞状态。堵塞时,线程并没有进入队列,只有当引起堵塞的原因被消除后,线程才可以转入就绪状态.

销毁状态:

   线程run()方法执行结束后或调用stop()方法时(不推荐)或,即处于销毁状态。

   注意进行销毁状态的线程并不代表Thread类的对象也要销毁,Thread对象仍然按照JVM管理对象方式去管理对象的生命周期去管理,只有当没有任何其他对象引用时才销毁。

 

© 著作权归作者所有

博为峰教研组
粉丝 50
博文 1224
码字总数 479077
作品 0
黄浦
程序员
私信 提问
[看图说话]38张图带你看遍Java基础

写在前面 近两年、随着移动端人才的饱和与市场投资的减少,移动端(主要只iOS与Android)找工作的难度有所增加(薪资与需求减少);因此,今年以来就开始着手学习Android,至今,初有成效。现在把...

才华惊动党中央
2017/12/28
0
0
一个java程序员的纠结

在校一直是做c/c++,校招的时候改做java了,还是做的javase,用纯粹的Javase api,但不是做桌面程序的,每天做的事情就是不断的熟悉Java本身的api,因为上学的时候数据结构和操作系统的课程学...

xpbob
2016/02/28
2.8K
18
JavaSE和JavaEE的起步学习路线

Java javaSE部分 1)能够掌握DOS系统常用基本命令; 2)熟练使用eclipse编写java代码; 3)掌握常用数据结构和算法; 4)掌握常用的编程设计模式; 5)熟练使用java语言的常用对象; 6)使用java编...

Jasonisoft
2016/05/18
0
0
并发编程:线程的生命周期是怎样的一个过程?

前言 在日常开发过程中,如果我们需要执行一些比较耗时的程序的话,一般来说都是开启一个新线程,把耗时的代码放在线程里,然后开启线程执行。但线程是会耗费系统资源的,如果有多个线程同时...

小刀爱编程
2018/12/28
24
1
Java弱引用与WeakHashMap

在《Effective Java 2nd Edition》中,第6条“消除过期的对象引用”提到,虽然Java有 垃圾回收机制,但是只要是自己管理的内存,就应该警惕内存泄露的问题,例如的对象池、缓存中的过期对象都...

zray4u
2016/09/04
122
0

没有更多内容

加载失败,请刷新页面

加载更多

总结

一、设计模式 简单工厂:一个简单而且比较杂的工厂,可以创建任何对象给你 复杂工厂:先创建一种基础类型的工厂接口,然后各自集成实现这个接口,但是每个工厂都是这个基础类的扩展分类,spr...

BobwithB
27分钟前
2
0
java内存模型

前言 Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Java内存模...

ls_cherish
31分钟前
2
0
友元函数强制转换

友元函数强制转换 p522

天王盖地虎626
昨天
5
0
js中实现页面跳转(返回前一页、后一页)

本文转载于:专业的前端网站➸js中实现页面跳转(返回前一页、后一页) 一:JS 重载页面,本地刷新,返回上一页 复制代码代码如下: <a href="javascript:history.go(-1)">返回上一页</a> <a h...

前端老手
昨天
5
0
JAVA 利用时间戳来判断TOKEN是否过期

import java.time.Instant;import java.time.LocalDateTime;import java.time.ZoneId;import java.time.ZoneOffset;import java.time.format.DateTimeFormatter;/** * @descri......

huangkejie
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部