Java程序设计教程 第8章-多线程.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文档。上传文档
查看更多
Java程序设计教程 第8章-多线程

第8章 多线程 本章学习目标 理解多线程的定义。 掌握线程的两种创建方法。 掌握线程的生命期及状态。 理解线程的同步。 掌握线程的调度方法和优先级设置。 掌握线程控制的一些方法。 了解线程组的概念及其实现方法。 多线程 概述 多线程的创建 线程的生命期及其状态 线程的同步 概述 进程和线程 单线程和多线程 Java语言支持多线程 说明 进程和线程 进程:一个动态执行的程序。 当你运行一个程序的时候,就创建了一个用来容纳组成代码和数据空间的进程。 线程:进程中单一顺序的执行流,线程可以共享内存单元和系统资源,但不能够单独执行,必须存在于某个进程当中。 单线程和多线程 单线程:一个进程中只包含一个线程,也就是说一个程序只有一条执行路线。 多线程:在单个进程中可以同时运行多个不同的线程执行不同的任务。 Java支持多线程 Java线程由以下三部分组成: 虚拟的CPU CPU所执行的代码 CPU所处理的数据 虚拟的CPU被封装在java.lang.Thread类中,有多少个线程就有多少个虚拟的CPU在同时运行,提供对多线程的支持。 说明 执行多线程的时候,Java虚拟处理机在多个线程之间轮流切换,不过每个时刻只能有一个线程在执行 。 main方法是Java的入口程序,一旦进入就启动了一个main线程 。 即使mian方法执行完最后一句, Java程序也会一直等到所有线程都运行结束后才停止 。 多线程的创建 线程体 Thread子类创建线程 使用Runnable接口创建线程 比较 线程体 线程中真正执行的语句块称为线程体。 方法run()就是一个线程体,在一个线程被建立并初始化以后,系统就自动调用run( )方法。 Thread子类创建线程 继承Thread类并重写其中的方法run( )来实 现,把线程实现的代码写到run( )方法中,线 程从run( )方法开始执行,直到执行完最后一 行代码或线程消亡。 请看例子 使用Runnable接口 利用Runnable接口可以让其他类的子类实现多线程的创建,这是利用继承Thread类的方法无法办到的。 采用该方式来创建线程,还必须引用Thread 类的构造方法,把采用Runnable接口类的对象作为参数封装到线程对象当中。 请看例子 比较 使用子类直接继承Thread类的方法创建线程,可以在子类中增加新的成员变量和新的成员函数,使得线程具有新的属性和功能,还可以直接操作线程,但由于java中不支持多继承,因此Thread子类不能扩展其他的类; 利用Runnable接口,线程的创建可以从其它类继承,使得代码和数据分开,不过需要使用Thread对象来操纵线程。 线程的生命期及其状态 线程的状态 线程的状态转换图 与线程状态有关的Thread类方法 线程的状态 线程的生命期是指从线程被创建开始到死亡的过程。通常包括以下5种状态: 新建状态 就绪状态 运行状态 阻塞状态 死亡状态 新建状态 当用Thread类或其子类创建了线程对象时,该线程对象就处于新建状态,系统为该新线程分配了内存空间和其他资源。 就绪状态 线程就排队等待CPU调度的状态。有三种情况使得线程进入就绪状态: 新建状态的线程被启动,但不具备运行的条件; 处于正在运行的线程时间片结束或调用yield()方 法; 被阻塞的线程引起阻塞的因素消除了,进入排队 队列等待CPU的调度。 运行状态 当线程被调度获得了CPU控制权的时候,就进入了运行状态。线程在运行状态时,会调用本对象的run()方法 。 阻塞状态 当运行的线程被人为挂起或由于某些操作使得资源不满足的时候,暂时终止自己的运行,让出CPU,进入阻塞状态。 有下面4种原因使得线程进入阻塞状态: 调用了wait()方法 调用了sleep()方法 调用了suspend()方法 由于输入输出流而引起阻塞 死亡状态 线程的run()方法执行完所有的任务正常地结束; 线程被stop()方法强制地终止。 线程的状态转换图 与线程状态有关的Thread类方法 线程状态的判断 线程的新建和启动 线程的阻塞和唤醒 线程的停止 线程状态的判断 isAlive()方法判断线程是否在运行,如果是,返回true,否则返回false。不管是线程未开启还是结束,isAlive()方法都会返回false。 线程的新建和启动 通过new Thread()方法可以创建出一个线程对象,不过此时Java虚拟机并不知道它,因此,我们需要通过start()方法来启动它。 请看例子 线程的阻塞和唤醒 wait()方法 sleep()方法 join()方法 yield()方法

文档评论(0)

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

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

1亿VIP精品文档

相关文档