- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java语言程序设计 第11章 多线程与并发 11.1 概述 11.2 线程状态控制 11.3 案例实践11:数字秒表 11.4 并发控制 11.5 案例实践12:生产者与消费者问题 11.1 概述 现代操作系统均支持多任务 (Multi-tasking),即同一时刻可以执行多个程序。例如,在用Word编辑文档的同时,播放器在播放音乐、下载程序在下载文件等。 即使对同一个程序而言,可能也需要同时执行多个“小任务”。例如,在线音乐播放器在播放音乐的同时,还在从网络上缓冲数据到本地以及刷新歌词显示。 上述的两个例子称为并发 (Concurrent) 程序,前一种并发由操作系统实现,而后一种并发通常以多线程 (Multi-threading) 方式实现。 11.1 概述 程序、进程与线程 1. 程序(Program) 程序是指令与数据的集合,通常以文件的形式存放在外存中,也就是说,程序是静态的代码,其可以脱离于计算机而存在——例如,存储在U盘中的程序。 2. 进程(Process) 进程就是运行中的程序,有时也称为任务 (Task)。操作系统运行程序的过程即是进程从创建、存活到消亡的过程。 进程与程序的区别主要体现在: (1) 进程不能脱离于计算机而存在,处于存活状态 (即运行中) 的进程会占用某些系统资源,如CPU时间、内存空间、外设访问权等,而程序仅占据外存。 (2) 进程是动态的代码,若不运行程序,则操作系统不会创建相应的进程。此外,可以创建同一个程序的多个进程。例如,在Windows中同时运行多次notepad.exe,任务管理器中将出现多个名为“记事本”的进程。 (3) 进程消亡时就不存在了,而对应的程序仍然存在。 11.1 概述 程序、进程与线程 3. 线程(Thread) 线程是进程中能够独立执行的实体 (即控制流程),是CPU调度和分派的基本单位。线程是进程的组成部分——进程允许包含多个同时执行的线程,这些线程共享进程占据的内存空间和其他系统资源。可见,线程的“粒度”较进程更小,在多个线程间切换所致的系统资源开销要比在多个进程间切换的开销小得多,因此,线程也称为轻量级的进程。 11.1 概述 多任务与多线程 多任务是指操作系统中同时运行着多个进程,因此有时也称为多进程。 多线程则是指同一进程中的某些控制流程被多个线程同时执行。 多任务与多线程是并发在不同级别的体现——前者是进程级别,而后者则是线程级别。 换句话说,多任务是站在操作系统的角度来看并发,而多线程则是站在进程的角度来看并发。 无论多任务还是多线程,它们通常能缩短完成某些(或某项)任务的时间,从而提高了系统资源的利用率。 11.1 概述 多任务与多线程 从理论上说,CPU在任一时刻只能执行一条指令,那么,为什么那些只具有一个CPU 的机器也支持并发呢? 1、不是所有的进程在任一时刻都需要使用到CPU资源。例如,CPU在执行某个进程的同时,另一个进程可能正在访问I/O设备,此时的两个进程完全可以同时执行。 2、操作系统让CPU交替执行这些进程。当多个进程同时需要CPU为自己服务时,操作系统会依据某种选择策略让CPU选择其中一个执行,并在很短的一段时间后切换到另一个进程执行,如此下去。 单CPU的机器支持多进程和多线程是从宏观 (用户) 角度来看的,从微观 (CPU) 角度看,多个进程仍然是以串行的方式执行的——即所谓的“微观串行,宏观并行”。 11.1 概述 多任务与多线程 严格来说,只有那些具有多个CPU的机器才支持真正意义上的并发。对于那些计算密集型的程序 (即程序执行时间主要耗费在CPU运算上,如计算圆周率小数点后一百万位、大矩阵相乘等),将程序编写为多个线程并将它们分派到各个CPU上并发执行,将大大缩短计算时间。 通常情况下,多个进程间不能 (也不应) 相互访问,除非通过操作系统或某些特定的通信管道 (如系统剪贴板、文件、网络连接等)。从系统资源的角度看,每个进程都占据着一段专属于自身的内存空间,其他进程无权访问。相比之下,同属于一个进程的多个线程却可以共享该进程的内存空间,这也是多任务与多线程最大的区别所在。 11.1 概述 线程状态及调度 1. 线程的状态 与对象一样,线程也具有生命周期。 ① 新建:线程被创建后所处的状态。 ② 可运行:此时的线程有资格运行,但线程调度程序尚未将其选定以进入运行状态。所有处于可运行状态的线程组成了一个集合——可运行线程池。 ③ 运行:线程调度程序从可运行池中选定一个线程并运行,该线程即进入运行状态。运行中的线程可以回到可运行状态,也可以进入阻塞状态。 ④ 阻塞:处于阻塞状态的线程并未终结,只是由于某些限制而暂停了。当
您可能关注的文档
- 自媒体账号运营实践方案.docx
- 坚果pro产品培训资料.pdf
- 坚果pro手机内部培训资料.pdf
- Java编程第00章-课前.ppt
- Java编程第01章-概述.ppt
- Java编程第02章-基本类型与运算符.ppt
- Java编程第03章-程序流程控制.ppt
- Java编程第04章-数组.ppt
- Java编程第05章-类与对象.ppt
- Java编程第06章-抽象类、接口与嵌套类.ppt
- 内蒙古自治区鄂尔多斯市第一中学2025-2026学年第一学期高一年级学业诊断检测12月月考语文试卷含答案.pdf
- 四川省2025-2026学年高三上学期12月阶段性自测地理试卷含答案.pdf
- 林区蓄水池防火配套建设指南.ppt
- 四川省2025-2026学年高三上学期12月阶段性自测历史试卷含答案.pdf
- 云南省2025-2026学年高三上学期12月阶段性自测地理试卷含答案.pdf
- 火灾区域生态修复实施指南.ppt
- 云南省2025-2026学年高三上学期12月阶段性自测历史试卷含答案.pdf
- 云南省2025-2026学年高三上学期12月阶段性自测日语试卷含答案.pdf
- 2025年水产养殖科技合作协议(鱼苗).docx
- 2025年水产养殖苗种繁育合作协议协议.docx
原创力文档


文档评论(0)