- 1、本文档共47页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十二 多线程
第11章 多线程 本章重点 线程的生命周期 多线程技术 线程的创建和实现多线程 线程的同步 11.1多线程的基本概念 多线程机制是Java语言的又一重要特征,使用多线程技术可以使系统同时运行多个执行体,这样可以加快程序的响应时间,提高计算机资源的利用率。使用多线程技术可以提高整个应用系统的性能。 程序 - 进程 - 线程 程序是为完成特定任务、用某种语言编写的 一组指令的集合。指一段静态的代码。 进程是程序的一次执行过程,是系统进行调 度和资源分配的一个独立单位。 程序-进程-线程 线程是比进程更小一级的执行单元。 线程是一个程序中实现单一功能的一个指令序列,一个程序中可以包含若干个线程,形成多条执行线索.或者简单说,线程是轻量级的进程。 每个线程也有它自身的产生、存在和消亡的过程, 也是一个动态的概念。 一个线程有它自己的入口和出口,以及一个顺序执 行的序列 线程不能独立存在,必须存在于进程中,各线程间 共享进程空间的数据。 线程 — 线程创建、销毁和切换的负荷远小于进程, 又称为轻量级进程(lightweight process)。 系统负担小,主要是CPU的分配。 基本概念之一:进程 进程是正在运行的一个程序 程序:静态对象--进程:动态过程 操作系统为每个进程分配一段内存空间, 包括:代码、数据以及堆栈等资源 多任务的操作系统(OS)中,进程切换对 CPU资源消耗较大 多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流都称为一个线程,线程彼此间互相独立。 多线程和传统的单线程在程序设计上最大的区别在于,由于各个线程的控制流彼此独立,使得各个线程之间的代码是无序执行的。 线程和进程一样拥有独立的执行控制,由操作系统负责调度,区别在于线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信比进程简单。 多个线程的执行是并发的,也就是在逻辑上“同时”,而不管是否是物理上的“同时”。如果系统只有一个CPU,那么真正的“同时”是不可能的,但是由于CPU的速度非常快,用户感觉不到其中的区别,因此也不用关心它,只需要设想各个线程是同时执行即可。 多线程的程序能更好地表述和解决现实世界 的具体问题,是计算机应用开发和程序设计 的一个必然发展趋势。 进程与多线程 线程的生命周期 每个Java程序都有一个主线程,即main方法对应的线程。要实现多线程,必须在主线程中创建新的线程。在Java语言中,线程用Thread类及其子类的对象来表示。每个线程要经历由“新生?就绪?运行?阻塞?死亡”5种状态,线程从新生到死亡的状态变化过程称为生命周期。 线程的生命周期 新建状态 用new关键字和Thread类或其子类建立一个线程对象后,该线程对象就处于新生状态。处于新生状态的线程有自己的内存空间,通过调用start方法进入就绪状态。 就绪状态 处于就绪状态的线程已经具备了运行条件,但还没有分配到CPU,因而将进入线程队列,等待系统为其分配CPU。一旦获得CPU,线程就进入运行状态并自动调用自己的run方法。 运行状态 在运行状态的线程执行自己的run方法中代码,直到调用其他方法而终止、或等待某资源而阻塞或完成任务而死亡。 阻塞状态 处于运行状态的线程在某些情况下,如执行了sleep(睡眠)方法,或等待I/O设备等资源,将让出CPU并暂时终止自己的运行,进入阻塞状态。 在阻塞状态的线程不能进入就绪队列。只有当引起阻塞的原因消除时,如睡眠时间已到,或等待的I/O设备空闲下来,线程便转入就绪状态,重新到就绪队列中排队等待CPU资源。当再次获得CPU时,便从原来终止位置开始继续运行。 死亡状态 死亡状态是线程生命周期中的最后一个阶段。线程死亡的原因有两个。一个是正常运行的线程完成了它的全部工作;另一个是线程被强制性地终止,如通过执行stop或destroy方法来终止一个线程。 11.2 Java语言的Thread线程类与Runnable 在Java中,创建线程的方法有两种: 一种方法是通过创建Thread类的子类来实现; 另一种方法是通过实现Runable接口的类来实现。 10.2.1通过Runable接口实现多线程 通过Runable接口实现多线程的方法: 设计一个实现Runable接口的类,然后根据工作需要重新设计线程的run方法;在run()中加入所要执行的代码. 建立该类的对象,以此对象为参数建立Thread类的对象; 调用Thread类对象的start方法启动线程,将执行权转交到run方法。 Java实例——通过
您可能关注的文档
最近下载
- 陕西省西安市2024年八年级下学期期末数学试题附答案.docx VIP
- 2023-2024学年陕西省西安市八年级(下)期末语文试卷.pdf VIP
- 机器视觉与数字图像处理基础(HALCON版)PPT课件.pptx
- 初中英语音标大全.pptx VIP
- 运用PDCA循环降低住院病人跌倒发生率.doc VIP
- 石油化工可燃气体和有毒气体检测报警设计标准.pptx
- GB_T41078-2021 建筑防水材料有害物质试验方法(高清最新版).pdf
- 《学习5以内数的分解与组成》幼儿园中班数学PPT课件.pptx VIP
- 城市轨道交通工程可行性研究报告编制方法 百分原题及答案 .pdf VIP
- 蔬菜水果配送服务采购投标方案.docx VIP
文档评论(0)