- 1、本文档共105页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
7.4.2 线程通信 在一些多线程应用中,需要线程之间互相交流和等待,实现互相通信。具体来说,可以通过共享的数据做到线程互相交流,通过线程控制方法使线程互相等待。Java语言的java.lang. Object类提供了wait()、notify()和notifyAll()等三个方法来协调线程间的运行进度关系,实现线程通信的。 线程通信是建立在生产者和消费者模型之上的,即一个(组)线程产生输出(相当于生产产品,该线程称为生产者,产生一串数据流),另一(组)线程进行输入(相当于消费者,该线程称为消费者,消耗数据流中的数据),先有生产者生产,才能有消费者消费。生产者没生产之前,通知消费者等待;而生产后通知消费者消费,消费者消费后再通知生产者生产,这就是等待通知机制(Wait/Notify)。 7.4多线程技术 【例7-11】线程通信示例的源代码。 public class Ex7_11_TestWaitNotify { public static void main(String[] args) { ProducerThread pt = new ProducerThread(); System.out.println(生产结果为:sum= + pt.getSum()); } } 7.4多线程技术 class ProducerThread extends Thread { long sum = 0; ProducerThread() { start(); } public void run() { synchronized (this) { for (int i = 0; i 1000; i++) sum += i; System.out.println(生产者产生完毕数据:sum= + sum); notify(); } }// run synchronized public long getSum() { try { wait(); } catch (InterruptedException ex) { ex.printStackTrace(); } return sum; } } 7.4多线程技术 7.4多线程技术 7.4.3 死锁 死锁是指线程间因互相等待对方的资源,而不能继续执行的情况。Java语言中未处理好同步问题,关键字synchronized使用不当就会导致死锁。一般来说,持有一个共享资源的锁并试图获取另一个时,就有可能发生死锁。 造成死锁问题的本质是无序使用造成的,在程序设计时应理清访问资源的顺序,确保每个线程获取资源和释放资源的顺序正好相反。例如,假设有3个资源,获得时顺序是资源1-资源2-资源3,释放时的顺序则为资源3-资源2-资源1。 7.4多线程技术 7.4.4 线程组 线程组(Thread Group)是指包含了许多线程的对象集,并可以拥有一个名字和一些相关的属性,用于统一管理组中的线程。Java中,将所有线程和线程组组织在一个线程组中,形成一棵树。若创建线程时不明确指定所属的线程组,则将被放在一个默认的线程组(系统线程组)中。Java语言提供了一个线程组类ThreadGroup,可用于对线程组中线程和线程组进行操作,如启动或阻塞组中的所有线程。该类的构造方法为ThreadGroup(String groupName)。 7.4多线程技术 7.4多线程技术 7.4多线程技术 7.5综合应用举例 生产者-消费者模型是典型的多线程应用的原型。本节介绍一个模拟生产者和消费者关系的程序。其中,生产者在一个循环中不断生产了从1到10的共享数据,而消费者则不断地消费生产者生产的1到10这些共享数据。 【例7-12】生产者-消费者示例的源代码。 /* ==================================================== * 文件:Ex7_12_TestProducerConsumer.java * 描述:生产者-消费者 * 包含五个类:主控类Ex7_12_TestProducerConsumer,共享数据控制类ShareData, * 共享数据类MyData,生产者Producer和消费者Consumer * ==================================================== */ // 主控类 7.5综合应用举例 public class Ex7_12_TestProducerConsumer { ? public static
您可能关注的文档
- 新Java 程序设计 教学课件 朱喜福 林建民 唐永 第01章.ppt
- 新Java 程序设计项目教程(教育部高职高专计算机教指委规划教材) 教学课件 张兴科 季昌武 项目五.ppt
- 新JavaScript程序设计基础教程 第2版 普通高等教育“十一五”国家级规划教材 教学课件 阮文江 第七章 对象编程1.ppt
- 新JavaScript程序设计基础教程 教学课件 曾海 第9章 CSS+DIV技术.ppt
- 新JavaScript脚本程序设计 教学课件 吴以欣 陈小宁 第3章 JavaScript常用内置对象.ppt
- 新Java编程与应用教程 教学课件 张莉 java_03.ppt
- 新Java编程与应用教程 教学课件 张莉 java_11.ppt
- 新Java程序设计 第二版 普通高等教育“十一五”国家级规划教材 教学课件 朱喜福2 1_ 第7章 Java的图形与用户界面.ppt
- 新Java程序设计 第二版 普通高等教育“十一五”国家级规划教材 教学课件 朱喜福2 第3章 类、类的继承和接口.ppt
- 新Java程序设计教程 工业和信息化普通高等教育“十二五”规划教材 教学课件 段新娥 贾宗维 2_ chap9.ppt
- 2024-2030全球高苯乙烯橡胶(结合苯乙烯含量≥60%)行业调研及趋势分析报告.docx
- 2024-2030全球钢丝增强聚氨酯软管行业调研及趋势分析报告.docx
- 职业技术学院计算机视觉实训室项目招标文件.pdf
- 2024-2030全球滑雪头盔式耳机行业调研及趋势分析报告.docx
- 2024-2030全球蛋白护甲油行业调研及趋势分析报告.docx
- 克与千克说课.pptx
- 2024-2030全球抽屉式万能断路器行业调研及趋势分析报告.docx
- 2024-2030全球户外灯牌行业调研及趋势分析报告.docx
- 如何立体地读懂古典诗词——高三古典诗词鉴赏备考策略谈.doc
- 2024-2030全球二氧化碳运输方案行业调研及趋势分析报告.docx
最近下载
- 无人驾驶车辆轨迹规划技术研究与应用 .pdf VIP
- 2025广东清远市英德市市区学校选调教师117人笔试备考题库及答案解析.docx
- 2025广东清远市英德市市区学校选调教师117人笔试备考试题及答案解析.docx
- 南芯产品规格书SC8886.pdf
- 2024-2025学年初中道德与法治七年级全一册中华民族大团结(同步训练)试题合集.docx VIP
- 2024-2025学年初中道德与法治七年级全一册中华民族大团结(单元测试)试题合集.docx VIP
- 全国建筑设计劳动(工日)定额(2015年度版).pdf
- 2024-2025学年初中道德与法治初中中华民族大团结教学设计合集.docx
- 第五节 中国的河流和湖泊.ppt
- 蔡康永论说话之道(完整版).doc
文档评论(0)