java程序设计教案-第12章.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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包中的一个专门用来创

文档评论(0)

1243595614 + 关注
实名认证
文档贡献者

文档有任何问题,请私信留言,会第一时间解决。

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档