- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第10章 多线程 10.1 多线程概述 10.1 多线程概述 10.2 多线程的创建 10.3 线程的调度与线程控制 10.4 线程的同步 小结 在线教务辅导网: 教材其余课件及动画素材请查阅在线教务辅导网 QQ:349134187 或者直接输入下面地址: 本章要点 ?? 多线程的基本概念 ? 多线程的创建 ? 线程调度与线程控制 ? 线程同步 本章难点 ?? 线程调度与线程控制 ? 线程同步的实现 1 多线程的概念 在一个进程内部也可以同时运行多个任务,将一个进程内部运行的每个任务都称为一个线程(thread)。线程是进程内部的单一的一个顺序控制流,即程序的一条执行路径,一个进程内可以拥有多个并发执行的线程,我们称之为多线程(Multi-Thread)。 2 Java中的多线程 在Java语言中,线程通过java.lang.Thread类进行定义和实现,在该类中封装了虚拟的CPU来进行线程操作控制。程序中的线程都是Thread类的实例。 多线程的 执行 …. 在某个时间点上运行的线程只有1个 ………… 3 线程的状态和生命周期 (1) 新建状态 创建了一个线程类的对象后,产生的新线程进入新建状态。 (2) 就绪状态 当一个新创建的线程调用start()方法后便进入可执行状态。 (3) 执行状态 当处于就绪状态的线程被调度并获得了CPU等执行必需的资源时,便 进入到该状态,即运行了run()方法。 (4) 阻塞状态 如果一个线程进入阻塞状态,那么这个线程暂时无法进入就绪队列。处于阻塞状态的线程通常需要某些事件才能唤醒。 (5) 终止状态 终止状态是线程执行结束的状态,没有任何方法可改变它的状态。 新建状态 阻塞状态 就绪状态 运行状态 终止状态 新建状态 阻塞状态 1 Thread类的构造方法 Java中的线程体是由线程类的run()方法定义,在该方法中定义线程的具体行为。 2 通过继承Thread类创建线程 (1) 定义一个线程类,它继承线程类Thread并重写其中的run()方法。 (2) 创建该子类的对象创建线程。 3 通过实现Runnable接口实现线程 public interface Runnable{ void run(); } (1) 定义一个类实现Runnable接口,即在该类中提供run()方法的实现; (2) 把Runnable的一个实例作为参数传递给Thread类的一个构造方法,该实例对象提供线程体run()。 例10-1 例10-2 1 线程优先级与线程调度策略 优先级越高,越先执行;优先级越低,越晚执行;优先级相同时,则遵循队列的“先进先出”原则。 2 线程的基本控制 (1)sleep() 把CPU时间让给优先级比其低的线程。 (2)yield() 可以使具有与当前线程相同优先级的线程有运行的机会。 (3)join() 使当前线程等待调用该方法的线程执行完毕之后再继续。 (4)currentThread() 具体是返回当前线程的引用。 (5)isAlive() 用isAlive()测试线程以确定线程是否活着。 (6)stop() 强行终止线程 (7)suspend()与resume() 在一个线程中调用t.suspend(),将使另一个线程t暂停执行。要想恢复线程,必须由其他线程调用t.resume()。 1 线程的同步 Java中对共享数据操作的并发控制是采用传统的封锁技术。用关键字synchronized为共享资源加锁来解决。 2 线程间的通信 当某线程需要在synchronized块中等待共享数据状态改变时,可以调用wait()方法。 当其操作完后,只要调用notify()方法就可以通知正在等待的线程重新占有锁并运行。 例10-3 线程是指程序内部的控制流,多线程就是在一个程序内部同时进行多个操作,每个操作占用一个线程,从而共享系统开销,提高通程序执行速度。在Java语言中,线程通过java.lang.Thread类进行定义和实现。 一个线程从创建、启动到终止的整个过程称为线程的生命周期,包括五种状态:新建状态、就绪状态、执行状态、阻塞状态、终止状态。 Thread类是多线程程序设计的基础。 Java虚拟机允许一个应用程序可以拥有多个同时执行的线程,优先级越高,越先执行。 Java通过Java.lang.object类的方法wait()和no
您可能关注的文档
- 新Java程序设计 教学课件 韦鹏程 石熙 肖丽 单元8 Java Applet程序.ppt
- 新Java程序设计 教学课件 韦鹏程 石熙 肖丽 单元9 图形用户界面编程.ppt
- 新Java程序设计 教学课件 韦鹏程 石熙 肖丽 单元10 文件与输入输出.ppt
- 新Java程序设计 教学课件 韦鹏程 石熙 肖丽 单元11 线程.ppt
- 新Java程序设计 教学课件 韦鹏程 石熙 肖丽 单元12 网络编程.ppt
- 新Java程序设计基础与实践 电子教案 费雅洁 第1章.ppt
- 新Java程序设计基础与实践 电子教案 费雅洁 第2章.ppt
- 新Java程序设计基础与实践 电子教案 费雅洁 第3章.ppt
- 新Java程序设计基础与实践 电子教案 费雅洁 第4章.ppt
- 新Java程序设计基础与实践 电子教案 费雅洁 第5章.ppt
- 新Java语言程序设计 第11章.ppt
- 新Java语言程序设计 教学课件 清华大学计算机与信息 1 java语言概述.ppt
- 新Java语言程序设计 教学课件 清华大学计算机与信息 2 Java语言基础.ppt
- 新Java语言程序设计 教学课件 清华大学计算机与信息 3 面向对象程序设计(上).ppt
- 新Java语言程序设计 教学课件 清华大学计算机与信息 4 面向对象程序设计(下).ppt
- 新Java语言程序设计 教学课件 清华大学计算机与信息 5 Java语言基础类库.ppt
- 新Java语言程序设计 教学课件 清华大学计算机与信息 6 程序中的异常处理.ppt
- 新Java语言程序设计 教学课件 清华大学计算机与信息 7 Java程序的输入输出.ppt
- 新Java语言程序设计 教学课件 清华大学计算机与信息 8 Java数据库编程接口.ppt
- 新Java语言程序设计 教学课件 清华大学计算机与信息 9 Java开发环境与工具.ppt
文档评论(0)