Java程序设计刘卫国第7章节Java线程.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文档。上传文档
查看更多
馋死 PPT研究院 POWERPOINT ACADEMY * * 尚辅网 / 第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 线程的创建 线程的生命周期 初期状态 阻塞状态 运行中 运行准备完成 消亡状态 可运行状态 run()的结束 wait()、 sleep()、 输入/输出操作开始等 notify() 、 sleep()结束、 输入/输出操作结束等 取得CPU 运行权 失去CPU 运行权 start() 线程状态迁移图 7.2 线程的创建 线程的四种状态 1.初期状态 通过new创建了新线程对象的状态。但是,此状态线程还未启动,通过调用start方法启动线程,转移到可运行状态。 2.可运行状态 线程开始运作的状态。这个状态进一步可分为运行中和运行准备完成两种状态。运行中是获得CPU运行权

文档评论(0)

精品课件 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档