- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
12.2.2 线程优先级 在Java系统中,运行的每个线程都有优先级。设置优先级是为了在多线程环境中便于系统对线程进行调度,优先级高的线程将优先得以运行。Java线程的优先级是一个在1~10之间的正整数,数值越大,优先级越高,未设定优先级的线程其优先级取缺省值5。Java线程的优先级设置遵从下述原则: (1) 线程创建时,子线程继承父线程的优先级; (2) 线程创建后,可在程序中通过调用setPriority( )方法改变线程的优先级; (3) 线程的优先级是1~10之间的正整数,并用标识符常量MIN_PRIORITY表示优先级为1,用NORM_PRIORITY表示优先级为5,用MAX_PRIORITY表示优先级为10。其他级别的优先级既可以直接用1~10之间的正整数来设置,也可以在标识符常量的基础上加一个常数。例如,下面的语句将线程优先级设置为8。 setPriority(Thread.NORM_PRIORITY+3); * 第12章 多 线 程 第12章 多 线 程 12.1 Java中的多线程实现技术 12.2 多线程的管理 12.1 Java中的多线程实现技术 12.1.1 线程的生命周期 每个Java程序都有一个缺省的主线程,对于Application,主线程是main( )方法执行的线索。对于Applet,主线程指挥浏览器加载并执行Java小程序。要想实现多线程,必须在主线程中创建新的线程对象。Java语言使用Thread类及其子类的对象来表示线程。新建的线程在它的一个完整的生命周期中通常要经历新生、就绪、运行、阻塞和死亡等五种状态,这五种状态之间的转换关系和转换条件如图12.1所示。 图12.1 线程的生命周期 新建 等待 睡眠 运行 就绪 挂起 阻塞 死亡 start 1.新生状态 当用new关键字和某线程类的构造方法创建一个线程对象后,这个线程对象处于新生状态,此时它已经有了相应的内存空间,并已被初始化。处于该状态的线程可通过调用start( )方法进入就绪状态。 2.就绪状态 处于就绪状态的线程已经具备了运行的条件,但尚未分配到CPU资源,因而它将进入线程队列排队,等待系统为它分配CPU。一旦获得CPU资源,则该线程就进入运行状态,并自动地调用自己的run方法。此时,它脱离创建它的主线程,独立开始了自己的生命周期。 3.运行状态 进入运行状态的线程执行自己的run方法中的代码。若遇到下列情况之一,则将终止run方法的执行。 (1) 终止操作。调用当前线程的stop方法或destroy方法进入死亡状态。 (2) 等待操作。调用当前线程的join(millis)方法或wait(millis)方法进入阻塞状态。当线程进入阻塞状态时,在millis毫秒内可由其他线程调用notify或notifyAll方法将其唤醒,进入就绪状态。在millis毫秒内若不唤醒则须等待到当前线程结束。 (3) 睡眠操作。调用sleep(millis)方法来实现。当前线程停止执行后,则处于阻塞状态,睡眠millis毫秒之后重新进入就绪状态。 (4) 挂起操作。通过调用suspend方法来实现。将当前线程挂起,进入阻塞状态,之后当其他线程调用当前线程的resume方法后,才能使其进入就绪状态。 (5) 退让操作。通过调用yield方法来实现。当前线程放弃执行,进入就绪状态。 (6) 当前线程要求I/O时,则进入阻塞状态。 (7) 若分配给当前线程的时间片用完时,当前线程进入就绪状态。如当前线程的run方法执行完,则线程进入死亡状态。 4.阻塞状态 一个正在执行的线程在某些特殊情况下,如执行了suspend、join或sleep方法,或等待I/O设备的使用权,那么它将让出CPU并暂时中止自己的执行,进入阻塞状态。阻塞时它不能进入就绪队列,只有当引起阻塞的原因被消除时,线程才可以转入就绪状态,重新进到线程队列中排队等待CPU资源,以便从原来终止处开始继续运行。 5.死亡状态 处于死亡状态的线程将永远不再执行。线程死亡有两个原因:一是正常运行的线程完成了它的全部工作;二是线程被提前强制性地终止,例如,通过执行stop或destroy方法来终止线程。 12.1.2 Thread类的方法 Thread类(线程类)是java.lang包中的一个专门用来创
您可能关注的文档
- 《浙江师范大学-有机化学》杂环.ppt
- 《浙江师范大学-有机化学》浙江师范大学《有机化学》(下)考试卷2004.pdf
- 《浙江师范大学-有机化学》浙江师范大学《有机化学》2001(下)考试卷.pdf
- 【生物03】高中生物晨背和晚背知识点 11.doc
- 【生物14】高中生物必修3 稳态与环境知识点汇编 8.docx
- 【数学01】高考数学全套知识点(通用版) 42.doc
- 【数学02】高中数学公式大全及常用结论 26.docx
- 【数学04】一篇收全高中数学解题基本方法 36.docx
- 【数学05】高考数学三角函数典型例题 15.doc
- 【数学06】23个基础的圆锥曲线问题 23.doc
- java程序设计教案-第13章.ppt
- java程序设计教案-第14章.ppt
- java程序设计教案-第15章.ppt
- Java语言与JBuilder应用初步 第八章 IO流库.ppt
- Java语言与JBuilder应用初步 第二章 Java基础.ppt
- Java语言与JBuilder应用初步 第九章 用JBuilder制作和发布Java程序.ppt
- Java语言与JBuilder应用初步 第六章 异常处理.ppt
- Java语言与JBuilder应用初步 第七章 多线程.ppt
- Java语言与JBuilder应用初步 第三章 Java的面向对象特性.ppt
- Java语言与JBuilder应用初步 第十二章 使用Swing组件.ppt
文档评论(0)