- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
9.3 线?程?的?状?态 每个Java程序都有一个缺省的主线程。对于Java应用程序,主线程是main()方法执行的线索;对于Applet程序,主线程是指挥浏览器加载并执行Java Applet程序的线索。要想实现多线程,必须在主线程中创建新的线程对象。任何线程一般具有五种状态,即创建、就绪、运行、阻塞、终止。线程状态的转移与方法之间的关系可用图9-3来表示。 图9-3 线程的状态转换 1. 创建状态 在程序中用构造方法创建了一个线程对象后,新的线程对象便处于新建状态,此时它已经有了相应的内存空间和其他资源,但还处于不可运行状态。创建一个线程对象可采用线程构造方法来实现,如Thread thread=new Thread();。 2. 就绪状态 创建线程对象后,调用该线程的start()方法就可以启动线程。当线程启动时,线程进入就绪状态。此时,线程将进入线程队列排队,等待CPU服务,这表明它已经具备了运行条件。 3. 运行状态 当就绪状态的线程被调用并获得处理器资源时,线程就进入了运行状态。此时,自动调用该线程对象的run()方法。run()方法定义了该线程的操作和功能。 4. 阻塞状态 一个正在执行的线程在某些特殊情况下,如被人为挂起或需要执行耗时的输入/输出操作时,将让出CPU并暂时中止自己的执行,进入阻塞状态。在可执行状态下,如果调用sleep()、suspend()、wait()等方法,线程都将进入阻塞状态。阻塞时,线程不能进入排队队列,只有当引起阻塞的原因被消除后,线程才可以转入就绪状态。 5. 终止状态 线程调用stop()方法时或run()方法执行结束后,线程即处于终止状态。处于终止状态的线程不具有继续运行的能力。 9.4 线程操作的一些方法 在Java实现多线程的程序中,虽然Thread类实现了Runnable 接口,但是操作线程的主要方法并不在Runnable接口中,而是在Thread类中。表9-1列出了Thread类中的主要方法。 9.4.1 取得和设置线程的名称 在Thread类中,可以通过getName()方法取得线程的名称,通过setName()方法设置线程的名称。线程的名称一般在启动线程前设置,但也允许为已经运行的线程设置名称。允许两个Thread对象有相同的名字,但为了清晰,应该尽量避免这种情况的发生。 另外,如果程序并没有为线程指定名称,则系统会自动为线程分配一个名称。 【例9-7】 GetNameThreadDemo.java。 程序说明: (1) 第1行声明一个GetNameThreadDemo类,此类继承自Thread类,之后3~7行复写Thread类中的run()方法。 (2) 第8~14行声明一个printMsg()方法,此方法用于取得当前线程的信息。在第11行,通过Thread类中的currentThread()方法,返回一个Thread类的实例化对象。由表9-1可知,此方法返回当前正在运行的线程,即返回正在调用此方法的线程。第12行通过调用Thread类中的getName()方法,返回当前运行线程的名称。 (3) 第6行和第21行分别调用了printMsg()方法,但第6行从多线程的run()方法中调用,而第21行从main()方法中调用。 为什么程序中输出的运行线程的名称中会有一个main呢?这是因为main()方法也是一个线程,实际上在命令行中运行Java命令时,就启动了一个JVM的进程,默认情况下此进程会产生两个线程:一个是main()方法线程,另外一个就是垃圾回收(GC)线程。 下例介绍如何在线程中设置线程的名称。 【例9-8】 SetNameThreadDemo.java。 表 9-1 Thread类中的主要方法
您可能关注的文档
- 2015金属结构设计(华科版)课件:绪论(用) .ppt
- 2015金属融化焊基础(机工版)课件:工程结构用钢.ppt
- 2015金属融化焊基础(机工版)课件:有害元素对焊缝金属的作用及其控制.ppt
- 2015金属融化焊基础(机工版)课件:淬火与回火.ppt
- 2015金属融化焊基础(机工版)课件:焊 剂.ppt
- 2015金属工艺学(冶金版)课件:金属液态成形(铸造)的概念.ppt
- 2015金属融化焊基础(机工版)课件:焊接热影响区.ppt
- 2015金属融化焊基础(机工版)课件:焊接热过程.ppt
- 2015金属融化焊基础(机工版)课件:焊条.ppt
- 2015金属融化焊基础(机工版)课件:焊缝金属的构成.ppt
- 北师大版(2024)八年级数学上册课件 3.2 平面直角坐标系 第2课时 点的坐标特征.pptx
- 北师大版(2024)八年级数学上册课件 3.2 平面直角坐标系 第3课时 建立适当的平面直角坐标系.pptx
- 北师大版(2024)八年级数学上册课件 4.3 一次函数的图象 第1课时 正比例函数的图象及性质.pptx
- (人教A版数学选择性必修三)讲义第15讲7.1.1条件概率(学生版+解析).docx
- (人教A版数学选择性必修三)讲义第19讲8.1成对数据的统计相关性(8.1.1变量的相关关系+8.1.2样本相关系数)(学生版+解析).docx
- 北师大版(2024)八年级数学上册课件 5.2 二元一次方程组的解法 第2课时 加减消元法.pptx
- (人教A版数学选择性必修一)2025年秋季学期讲义第01讲1.1.1空间向量及其线性运算(学生版+教师版).docx
- 北师大版(2024)八年级数学上册课件 5.2 二元一次方程组的解法 第1课时 代入消元法.pptx
- 北师大版(2024)八年级数学上册课件 5.3 二元一次方程组的应用 第3课时 二元一次方程组的应用(3).pptx
- 北师大版(2024)八年级数学上册课件 5.4 二元一次方程与一次函数 第2课时 用二元一次方程组确定一次函数表达式.pptx
最近下载
- 内蒙古自治区矿产资源储量.doc VIP
- 高三英语语法填空题20套(带答案)含解析.docx VIP
- 冠脉分叉病变并严重钙化的pci处理_陈竹君.ppt VIP
- 939_98G359-3悬挂运输设备轨道.pdf VIP
- 危险化学品目录(2025版) .pdf VIP
- 2025年全国预防接种技能竞赛【决赛】考试题库(含答案).docx VIP
- GB 50345-2012 屋面工程技术规范.docx VIP
- 中国铀矿山绿色安全的现状与发展思路参考.pdf VIP
- 2025年云南省投资控股集团有限公司人员招聘笔试备考试题及完整答案详解一套.docx VIP
- 冠脉分叉病变并严重钙化的PCI处.pptx VIP
文档评论(0)