- 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.2 线程的创建 线程的实现方法 10.2 线程的创建 线程的实现方法 继承Thread类 定义一个线程类,它继承线程类Thread并重写其中的run()方法。这个run()方法中包含了用户线程的操作。当需要创建线程时,只需要创建一个已定义好的Thread子类的对象就可以了 10.2 线程的创建 线程的实现方法 实现Runnable接口 使用该方法创建线程时,通常是创建一个类实现接口Runnable作为线程的目标对象。初始化一个线程类时,将目标对象传递给Thread实例,由该目标对象提供run()方法。这种方法在实现Runnable接口的同时可以继承其他类。 10.2 线程的创建 线程的实现方法 两种方法的比较 继承Thread类。程序编写简单。可以用this指针指向实际控制运行的Thread对象,因此不需要再使用类似于Thread.currentThead()的语句。但是不能再继承其他类。 实现Runnable接口。从面向对象的角度看,它更符合面向对象设计的思想。另外,它也可以继承其他类。 10.2 线程的创建 线程的实现方法 在具体应用中,采用哪种方法来创建线程要视具体情况而定。通常,当一个线程已继承了另一个类,而想在该线程中在创建一个新的线程时,就应该用第二种方法来构造,即实现Runnable接口。 10.3 线程的同步 有时多个线程执行时需要共享数据,这时候就需要考虑到其他线程的状态和行为。如:有两个售票口:A和B同时售票,对于售出的车票,如果A窗口售出的票,B窗口就不能再售出。否则就会出现两个乘客的车票是相同的。这时候车票即是两个售票口共享的资源。车票在某一时刻只被一个售票口所使用。 10.3 线程的同步 线程同步的思想即能解决以上问题。在线程同步中,Java引入了一个类似于信号量的机制:管程。每个被独立享有的资源对应一个管程,首先占用这个资源的线程同时拥有了该资源的管程,在它完成操作释放管程之前, 10.3 线程的同步 其他欲访问同一资源的线程只能排队等候管程,从而实现了在某一时刻,仅有一个线程对资源的独占。在线程同步中,Java使用synchronized关键字标识被同步的资源。凡是被synchronized关键字修饰的方法或代码段,系统在运行时都会分配给它一个管程,并保证在同一时刻只有一个线程在独占这份资源。 10.4 线程的死锁 线程死锁指两个或以上线程共享同一种资源,第一个线程等待第二个线程释放资源,而同时第二个线程又在等待第一个线程释放资源。好比这种现象:在人行道上两个人迎面相遇,为了给对方让道,两人同时向一侧迈出一步,双方无法通过,又同时向另一侧迈出一步,这样还是无法通过。 10.4 线程的死锁 解决死锁没有简单的方法,这是因为使线程产生这种问题是很具体的情况,而且往往有很高的负载。大多数软件测试产生不了足够多的负载,所以不可能暴露所有的线程错误。在每一种使用线程的语言中都存在线程死锁问题。在Java中,线程死锁也将越来越普遍了。虽然可以在Java代码中增加同步关键字synchronized的使用,这样可以减少死锁,但这样做也会影响性能。所以在进行多线程编程时一定要谨慎。 10.4 线程的死锁 假如我们的程序根本不要求多个代码块并发执行,那自然不需要使用多线程;假如我们的程序虽然要求多个代码块并发执行,但是却不要求乱序,则我们完全可以用一个循环来简单高效地实现,也不需要使用多线程;只有当它完全符合多线程的特点时,多线程机制对线程间通信和线程管理的强大支持才能有用武之地,这时使用多线程才是值得的。 10.5 本章小结 在实生中有些处理需要多个方法协助完成,例如一个提供火车票订的购系统同时有很多人使用,但无论如何也不能出现一个座位卖给两个人这种情况,这就需要多线程的控制。通过本章的的学习同学们要熟练掌握多线程的相关概念、线程的状态及生命周期、Java中实现多线程的方式及多线程的管理等。 10.6 习题 一、判断题 1.当一个线程睡眠时,sleep()方法不消耗处理器时间。( ) 2.如果一个线程阻塞了,那么它是不可执行的。( ) 二、选择题 1.一个Java应用程序运行后,在系统中是作为一个( )。 A、线程 B、进程 C、进程或线程 D、不可预知 2.线程的状态不包括( )。 A、新建 B、死亡 C、运行 D、睡眠 10.6 习题 三、简答题 1.什么是线程,什么是进程? 2.简述线程的生命周期? 在线教务辅导网: 教材其余课件及动画素材请查阅在线教务辅导网 QQ:349134187 或者直接输入下面地址: 第十章Java的多线程编程 Java的多线程编程 多线程概述 线程的创建 线程的同步 线程的死锁 本章小结 10.1多线程概述 进程与线程 线程的状态与生命周期 10.
您可能关注的文档
- 新Java 程序设计 第13章.ppt
- 新Java 程序设计 第14章.ppt
- 新Java 程序设计 第15章 Java与数据库编程.ppt
- 新Java 程序设计 教学课件 王秀红 李兴福 王新春 第1章.ppt
- 新Java 程序设计 教学课件 王秀红 李兴福 王新春 第2章.ppt
- 新Java 程序设计 教学课件 王秀红 李兴福 王新春 第3章.ppt
- 新Java 程序设计 教学课件 王秀红 李兴福 王新春 第4章.ppt
- 新Java 程序设计 教学课件 王秀红 李兴福 王新春 第5章.ppt
- 新Java 程序设计 教学课件 王秀红 李兴福 王新春 第6章.ppt
- 新Java 程序设计 教学课件 王秀红 李兴福 王新春 第7章.ppt
- 新Java程序设计(第二版) 教学课件 杨学全 第11章.ppt
- 新Java程序设计案例教程 2 第1章 Java语言入门.ppt
- 新Java程序设计案例教程 2 第2章 Java语言编程基础知识.ppt
- 新Java程序设计案例教程 2 第3章 Java语言的流程控制.ppt
- 新Java程序设计案例教程 2 第4章 数组和程序分块设计.ppt
- 新Java程序设计案例教程 2 第5章 面向对象的程序设计.ppt
- 新Java程序设计案例教程 2 第6章 图形用户界面设计基础.ppt
- 新Java程序设计案例教程 2 第7章 文件管理和多线程.ppt
- 新Java程序设计案例教程 2 第8章 Java网络编程基础.ppt
- 新Java程序设计案例教程 教学课件 崔曙光 李春奇 Java程序设计案例教程(第八章).ppt
最近下载
- 2025江苏苏州张家港市长江保坍实业有限公司招聘1人笔试参考题库附答案解析.docx VIP
- 2025江苏苏州张家港市长江保坍实业有限公司招聘1人笔试备考试题及答案解析.docx VIP
- 2022年宁夏环保集团有限责任公司招聘考试题库及答案解析.docx VIP
- 2025江苏苏州张家港市长江保坍实业有限公司招聘1人笔试备考题库及答案解析.docx VIP
- 视频网站付费会员的调查报告.pdf VIP
- 2025江苏苏州张家港市长江保坍实业有限公司招聘1人笔试历年参考题库附带答案详解.docx VIP
- 江门市城乡规划技术标准与准则(2019年最终稿).pdf
- 灭火器使用培训PPT课件.pptx VIP
- 《信息安全技术 人工智能计算平台安全框架-编制说明》.pdf VIP
- 2024年宁夏环保集团有限责任公司人员招聘笔试备考题库及答案解析.docx VIP
文档评论(0)