- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第10章 线程机制 第10章 线程机制 10.1 Java中的多线程机制 10.2 多线程类的创建与实现 10.3 本章小结 随着计算机的飞速发展,个人计算机上的操作系统也纷纷采用多任务和分时设计,将早期只有大型计算机才具有的系统特性带到了个人计算机系统中。一般可以在同一时间内执行多个程序的操作系统都有进程的概念。一个进程就是一个执行中的程序,而每一个进程都有自己独立的一块内存空间、一组系统资源。在进程概念中,每一个进程的内部数据和状态都是完全独立的。Java程序通过流控制来执行程序流。 10.1 Java线程机制 线程的基本概念 一般来说,我们把正在计算机中执行的程序叫做“进程”(Process) ,而不将其称为程序(Program)。 所谓线程(Thread),是进程中某个单一顺序的控制流,又称为轻量级进程。 线程状态与生命周期 每个线程都是和生命周期相联系的,一个生命周期含有多个状态,这些状态间可以互相转化。 线程从产生到消失的生命周期中通常要经历创建、可运行、运行中、阻塞、死亡五种状态。 多线程的实现方法 所谓多线程,就是通过系统的调度使几个具有不同功能的程序流即线程同时并行地运行。 线程调度与优先级 在CPU上以某种次序执行多个线程被称为调度。 10.1.1 线程的基本概念 线程与进程的相似点 一段完成某个特定功能的代码 程序中单一顺序的控制流 线程与进程的不同点 同类的多个线程是共享一块内存空间和一组系统资源,而线程本身的数据通常只有微处理器的寄存器数据,以及一个供程序执行时使用的堆栈. 所以系统在产生一个线程,或者在各个线程之间切换时,负担要比进程小的多, 线程也被称为轻负荷进程(light-weight process).一个进程中可以包含多个线程 执行上下文 在线程内执行的代码只在它的上下文中起作用,因此某些地方用执行上下文来代替线程。 10.1.1 线程的基本概念 分时操作系统 通俗一点与就是可以同一时间执行多个程序的操作系统 并不是CPU在同时执行这些程序,CPU只是将时间切割为时间片,然后将时间片分配给这些程序,获得时间片的程序开始执行,不等执行完毕,下个程序又获得时间片开始执行,这样多个程序轮流执行一段时间,由于现在CPU的高速计算能力,给人的感觉就像是多个程序在同时执行一样。 Java的多线程就是在操作系统每次分时给Java程序一个时间片的CPU时间内,在若干独立的可控制的线程之间切换。如果计算机有多个CPU处理器,若JVM能充分利用这些CPU,那么Java程序在同一时刻就能获得多个时间片,Java程序就可以获得真实的同步线程执行效果。 10.1.2 线程状态与生命周期 同进程一样,一个线程也有从创建,运行到消亡的过程,称为线程的生命周期 每个线程都是和生命周期相联系的,一个生命周期含有多个状态,这些状态间可以互相转化 线程从产生到消失的生命周期中通常要经历创建、可运行、运行中、阻塞、死亡五种状态。 10.1.2 线程状态与生命周期 创建状态 当用new操作符创建一个新的线程对象时,该线程处于创建状态。 创建状态是线程已被创建但未开始执行的一个特殊状态。 处于创建状态的线程只是一个空的线程对象,系统不为它分配资源。 下面的声明创建了一个新的线程,使它处于创建状态。 Thread myThread=new myThreadClass( ); 可运行状态 start()方法分配运行这个线程所需的系统资源,安排其运行,并调用线程体的run()方法,start()方法返回后,线程处于可运行状态也称为就绪状态 优先级高的线程通常用来执行一些关键性和紧急任务,低优先级线程往往需等待更长的时间才有机会运行。 如下语句使线程进入可运行状态。 Thread myThread=new MyThreadClass( ); myThread.start( ); 10.1.2 线程状态与生命周期 运行状态 当可运行状态的线程被调度并获得处理器资源时,便进入运行状态,这时便开始顺序执行run()方法的每一条语句。 运行状态表示线程拥有了对处理器的控制权,其代码正在运行,除非运行过程的控制权被另一优先级更高的线程抢占,否则这个线程将一直持续到运行完毕。 阻塞状态 阻塞状态又称为不可运行状态。线程如果处于这个状态,那么线程将无法进入就绪队列 处于阻塞状态的线程通常必须由某些事件唤醒 处于阻塞状态的线程,即使处理器空闲,它也不能使用。只有当引起阻塞的原因被消除后,线程才可以转入到可运行状态 消亡状态 消亡状态表示线程已退出运行状态,并且不再进入就绪队伍 Java1.2不赞成使用destroy()或stop()命令终止线程,因为使用不当,可能会导致程序的死锁。如果需要线程死
您可能关注的文档
- EDA技术与Verilog设计 作者 王金明 冷自强 编著 教案 第7章.PPT
- EDA技术与Verilog设计 作者 王金明 冷自强 编著 教案 第9章.ppt
- EDA技术与Verilog设计 作者 王金明 冷自强 编著 教案 第11章.ppt
- EDA技术与实验 作者 李国洪 胡辉 第2章 可编程逻辑器件与数字系统的设计.ppt
- EDA技术与实验 作者 李国洪 胡辉 第3章 MAX+plusⅡ软件的应用.ppt
- EDA技术与实验 作者 李国洪 胡辉 第4章 QuartusⅡ软件的应用.ppt
- EDA技术与实验 作者 李国洪 胡辉 第5章 VHDL设计基础.ppt
- EDA技术与实验 作者 李国洪 胡辉 第6章 EDA综合设计.ppt
- EDA技术与实验 作者 李国洪 胡辉 目录.ppt
- EDA技术与应用 作者 陈海宴 第1章 EDA技术概述.ppt
- Java程序设计及应用开发教程 作者 虞益诚 主编 第11章Applet程序.ppt
- Java程序设计及应用开发教程 作者 虞益诚 主编 第13章Java网络编程基础.ppt
- Java程序设计及应用开发教程 作者 虞益诚 主编 第14章Servlet程序设计.ppt
- Java程序设计及应用开发教程 作者 虞益诚 主编 第15章JSP程序设计.ppt
- Java程序设计实训教程 作者 汪志达 主编 程 琪 陈小冬 副主编 第2章 Java面向对象编程基础(上).ppt
- Java程序设计实训教程 作者 汪志达 主编 程 琪 陈小冬 副主编 第3章 常用工具.ppt
- Java程序设计实训教程 作者 汪志达 主编 程 琪 陈小冬 副主编 第4章 Applet与图形用户界面(上).ppt
- Java程序设计实训教程 作者 汪志达 主编 程 琪 陈小冬 副主编 第4章 Applet与图形用户界面(下).ppt
- Java程序设计实训教程 作者 汪志达 主编 程 琪 陈小冬 副主编 第5章Java网络程序设计及相关技术.ppt
- Java程序设计实训教程 作者 汪志达 主编 程 琪 陈小冬 副主编 第6章 J2ME无线应用编程.ppt
原创力文档


文档评论(0)