- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[工学]第9章 Java多线程
哈尔滨工业大学计算机系代亚非 第9章 Java多线程 学习导读 多线程机制使得程序的多个子任务能够“同时”执行 多线程是指同时存在几个执行体,按几条不同的执行线索共同工作的情况。Java语言实现了对多线程的支持,它使得编程人员可以很方便地开发出能同时处理多个任务的功能强大的应用程序。 在Java语言中,不仅语言本身有多线程的支持,可以方便地生成多线程的程序,而且运行环境也利用多线程的应用程序并发提供多种服务。 本章介绍如何实现Java语言中的多线程机制 课程结构 9.1 多线程基本概念 9.2 创建线程的方式 9.3 线程的挂起与唤醒 9.4 多线程问题 9.1 多线程基本概念 9.1 多线程基本概念 多线程的优势: 减轻编写交互频繁、涉及面多的程序的困难. 程序的吞吐量会得到改善. 由多个处理器的系统,可以并发运行不同的线程.(否则,任何时刻只有一个线程在运行) 9.1 多线程基本概念 一、线程与进程的区别: 多个进程的内部数据和状态都是完全独立的,而多线程是共享一块内存空间和一组系统资源,有可能互相影响. 线程本身的数据通常只有寄存器数据,以及一个程序执行时使用的堆栈,所以线程的切换比进程切换的负担要小。 9.1 多线程基本概念 二、线程的状态和生命周期 1.新建 2.就绪 3.运行 4.阻塞 5.死亡 9.1 多线程基本概念 1.新建 当一个Thread类或其子类的对象被声明并创建时,新生的线程对象处于新建状态。此时它已经有了相应的内存空间和其他资源,并已被初始化。 2.就绪 处于新建状态的线程被启动后,将进入线程队列排队等待CPU时间片,此时它已经具备了运行的条件,一旦轮到它来享用CPU资源时,就可以脱离创建它的主线程独立开始自己的生命周期了。另外,原来处于阻塞状态的线程被解除阻塞后也将进入就绪状态。 9.1 多线程基本概念 3.运行 当就绪状态的线程被调度并获得处理器资源时,便进入运行状态。 run方法 每一个Thread类及其子类的对象都有一个重要的run()方法,当线程对象被调度执行时,它将自动调用本对象的run()方法,从第一句开始顺序执行。run()方法定义了这一类线程的操作和功能。 9.1 多线程基本概念 4.阻塞 一个正在执行的线程如果在某些特殊情况下,如被人为挂起或需要执行费时的输入输出操作时,将让出CPU并暂时中止自己的执行,进入阻塞状态。 阻塞时它不能进入排列队列,只有当引起阻塞的原因被消除时,线程才可以转入就绪状态,重新进到线程队列中排队等待CPU资源,以便从原来终止处开始继续执行。 9.1 多线程基本概念 5.死亡 处于死亡状态的线程不具有继续运行的能力。线程死亡的原因有两个: 一个是正常运行的线程完成了它的全部工作,即执行完了run()方法的最后一个语句并退出; 另一个是线程被提前强制性地终止,如通过执行stop()方法或destroy()终止线程。 9.1 多线程基本概念 三、线程调度与优先级 处于就绪状态的线程排队等候处理器资源 线程先分配CPU资源的先后,称为线程调度 为了方便线程调度,多线程系统会给每个线程自动分配一个线程的优先级,任务较紧急重要的线程,其优先级就较高;相反则较低 在Java系统中,线程调度采用优先级基础上的“先到先服务”原则 9.1 多线程基本概念 四、线程组 在Java中,线程组是类ThreadGroup的对象,每个线程Thread都隶属于惟一一个线程组 这个线程组在线程创建时指定并在线程的整个生命期内都不能更改 用户可以通过调用包含 ThreadGroup 类型参数的 Thread 类构造函数来指定线程所属的线程组。 9.1 多线程基本概念 在创建线程时显式地制定线程组,采用下述三种构造方法之一: 1)Thread(ThreadGroup,Runnable) 2)Thread(ThreadGroup,String) 3)Thread(ThreadGroup,Runnable,String) 若没有指定,则线程默认地隶属于名为system的系统线程组 例如,下面的语句创建了一个名为myThreadGroup的线程组: ThreadGroup myThreadGroup = new ThreadGroup(“my Group of Threads”) 9.1 多线程基本概念 线程组的作用: Java允许对一个线程组中的所有线程同时进行操作,比如可以通过调用线程组的相应方法来设置其中所有线程的优先级,也可以启动或阻塞其中的所有线程 Java的线程组机制的另一个重要作用是线程安全。线程组机制允许通过分组来区分有不同安全特性的线程,对不同组的线程进行不同的处理,还可以通过线程组的分层结构来支持不对等安全措施的采用 9
您可能关注的文档
最近下载
- WST 554-2017 学生餐营养指南.pdf VIP
- 致用英语(第三版)听力教程1教学课件Unit 7-PPT课件.pptx VIP
- 烽火岁月中的木刻 课件 2025浙美版美术七年级上册.ppt
- 13G311-1混凝土结构加固构造图集.pdf VIP
- 小学数学六年级《找规律》数学活动课PPT课件.ppt VIP
- 【历史】七年级下册必背知识点汇总+2024-2025学年统编版七年级历史下册.docx VIP
- 高标准农田跟踪审计、工程中间计量、变更价格调整及竣工结算审核项目 投标方案(技术方案).doc
- 保安管理与风险控制培训课件.pptx VIP
- (新教材)部编人教版一年级上册小学语文全册教案(教学设计)(新课标核心素养教案).pdf
- FANUC机器人的码垛堆积功能(二)示教编程.docx VIP
文档评论(0)