面向对象的程序设计-Java张白一第三版第13节.pptVIP

面向对象的程序设计-Java张白一第三版第13节.ppt

  1. 1、本文档共53页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第13章 多线程    13.1 Java中的多线程实现技术   多线程机制是Java语言的又一重要特征,使用多线程技术可以使系统同时运行多个执行体,这样就可以加快程序的响应时间,提高计算机资源的使用效率。正确使用多线程技术可提高整个应用系统的性能。 13.1.1 线程的生命周期   每个Java程序都有一个缺省的主线程。对于Application,主线程是main(?)方法执行的线索。对于Applet,主线程指挥浏览器加载并执行Java小程序。要想实现多线程,必须在主线程中创建新的线程对象。   Java语言使用Thread类及其子类的对象来表示线程。新建的线程在它的一个完整的生命周期中通常要经历新生、就绪、运行、阻塞和死亡等五种状态,这五种状态之间的转换关系和转换条件如图13.1所示。 图13.1 线程的生命周期   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方法来终止线程。 13.1.2 Thread类的方法   Thread类(线程类)是java.lang包中的一个专门用来创建线程和对线程进行操作的类。Java在Thread类中定义了许多方法,这些方法可以帮助我们运用和处理线程。这些方法可分为四组:   (1) 构造方法。该方法用于创建用户的线程对象。表13.1列出了Thread类的构造方法。 表13.1 java.lang.Thread类的构造方法   (2) ?run(?)方法。该方法用于定义用户线程所要执行的操作。   (3) 改变线程状态的方法,如start(?)、sleep(?)、stop(?)、suspend(?)、resume(?)、yield(?)和wait(?)方法等。这是最常用的一组方法。   (4) 其他方法,如setPriority(?)、setName(?)等。   表13.2列出了Thread类的后三组方法。 表13.2 java.lang.Thread类的常用方法   在Java语言中创建线程对象有两种途径:一是以创建Thread类的子类为途径,二是以实现Runnable接口为途径。用实现Runnable接口的方式创建线程与用继承Thread类的方式创建线程无本质差别,但是,由于Java不支持多继承,因此任何类如果已经继承了某一类时,就无法再继承Thread类,这时只能通过实现接口Runnable的方式创建线程对象。

文档评论(0)

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

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档