Java程序设计 教学课件 刘卫国 第7章 Java线程.pdfVIP

Java程序设计 教学课件 刘卫国 第7章 Java线程.pdf

  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文档。上传文档
查看更多
第7章 Java多线程 7.1 进程与线程 7.2 线程的创建 7.3 线程的调度与同步机制 7.4 线程的通信 7.1 Java 语言的发展历史与应用 7.1.1 进程的概念 进程是重量级的内核级实体,需要分配它们自己独立的地址空间:包括有虚拟内存 映射、文件描述符、用户ID等,并且每个进程都有属于自己的这些集合,是资源分 配的基本单位。用户的程序要访问结构中的数据、查询或改变状态,唯一方法是通 过系统调用。进程间通信和转换是昂贵和受限的。 7.1 Java 语言的发展历史与应用 7.1.2 线程的概念 线程是轻量级实体,由寄存器、堆栈和某些数据组成。进程结构的其余部分由所有 的线程所共享:如地址空间、文件描述符等—— 它们共享相同的地址空间并且共同 分享同一个进程。线程间通信是便宜的,线程间的转换也是低成本的。 7.1 Java 语言的发展历史与应用 7.1.2 线程的概念 并发性(Concurrency )是两个或多个线程(或传统的进程) 可以同时在执行代码之中;可以是相同的代码,也可以是不 同的代码。这些线程可以一次执行,也可以多次执行,即一 个已开始执行但被中断,而另外一个已开始了。 但在给定的时间点上,只有一个在CPU 在处理一个线程。 7.1 Java 语言的发展历史与应用 7.1.2 线程的概念 并行性(Parallelism )是针对多处理器环境而言的, 是指两个或多个线程真正同时运行在不同的CPU 上。 在多处理器机上,很多不同的线程可以并行运行, 或者说是同时运行。 7.1 Java 语言的发展历史与应用 7.1.2 线程的概念 Java 语言在设计的初期就引入了多线程的概念 Java 程序开始运行时,Java 虚拟机生成一个新的线程,由 这个线程运行main() 方法,这个线程称为main 线程,main() 方法运行完毕返回后,main线程也随之消亡。 在main线程运行过程中,可以生成新线程,而新生成的线 程又可生成其他的线程。 而除main线程外,其他的线程的运行主体为线程所属对象 的run() 方法,随着run() 方法运行结束,该线程也会结束。 注意:main线程与程序的结束之间没有关系,即使main线程 很早就结束了,但只要程序中还有其他线程没有消亡,程序 就没有结束。 7.2 线程的创建 两种创建方式(继承Thread 和实现Runnable ) 1. 通过直接扩展Thread 类来直接创建线程: public class CountDownThread extends Thread new CountDownThread(thread 1).start() 举例:CountDownThread.java 2. 通过设计一个类,使之实现java. lang. Runnable 接口,再 把该接口作为参数传递给Thread 类的构造方法后间接创建 线程: public class CountDownTest implements Runnable new Thread(CountDownTest(thread 1)).start() 举例:CountDownTest.java 7.2 线程的创建 两种创建方式的比较 * 如果我们并不改变线程本身的性质,仅覆盖run 方法,并没有增 加新的功能,因此将Thread 扩展子类并不恰当,这不太符合类扩 展规范,因此采用实现Runnable 方式。 * 如果实现Runnable接口,它使我们所设计的类可以扩展其它类型 而变得更为有用。 7.2 线程的创建 线程内容的定义 * 覆盖或实现run 方法… *start 方法一般只用来触发线程,把线程的内容放在这个方法体中 不太规范,而且这样做实际上线程不会竞争运行。 * 如果直接调用run 方法,线程也不会竞争运行,必须通过start 方 法间接调用run 方法。 7.2 线程的创建 线程的生命周期 可运行状态 notify() 、 sleep()结束、 初

您可能关注的文档

文档评论(0)

118压缩包课件库 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档