- 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文档。上传文档
查看更多
如何选择创建方式? 建议:实现Runnable接口 1) 符合面向对象的设计原则。接口的功能就是让实现它的类附上特定的功能,但不会改变类原来的继承框架。 2) Java类是单根继承结构。如果继承了Thread类,就无法再继承别的类。例如Java applet必须继承Applet类,因此只能通过实现Runnable接口来附加线程的功能。 3) 程序的一致性设计原则。 缺点:实现起来比直接继承Thread类要复杂一些。 注意: (1) wait()、 notify()和notifyAll()都是Object类中的方法,而不是Thread类中的方法。 (2)wait()、 notify()和notifyAll()方法只能在锁定(用synchronized修饰)的程序或语句块中使用,否则会产生编译异常。 (3)一开始没有产品,当线程(Consumer)调用对象(Stack)的wait()方法时,就把这个线程加到该对象的等待线程队列中。当另一个线程(Produce)生产产品后,就调用同一对象(Stack)的notify()方法时,对象会唤醒其等待线程队列中的一个线程(Consumer) ,允许它继续运行。 Java的线程调度并不是严格按照优先级顺序的,他只是保证优先级高的线程得到时间片的机会更大一些。 实际编程时,不建议使用线程的优先级来确保算法的正确执行。要编写正确、跨平台的多线程代码,必须假设线程在任何时刻都有可能被剥夺CPU资源的使用权。 在Java平台中,创建一个线程非常简单,最直接的方法就是从线程类java.lang.Thread继承。在缺省情况下,线程类可以被所有的Java应用程序调用 JDK5.0之前 * 在Java平台中,创建一个线程非常简单,最直接的方法就是从线程类java.lang.Thread继承。在缺省情况下,线程类可以被所有的Java应用程序调用 1 class Stack {//保存资源的缓冲区 2 private int index = 0; 3 private Goods[] buffer = new Goods[5]; 4 public synchronized void put(Goods goods) { while(index == buffer.length) {//缓冲区满 System.out.println(index); 7 try { 8 this.wait();//暂不生产,等待 9 } catch (InterruptedException e) {} 10 } 11 buffer[index] = goods; 12 index++; 13 this.notify();//已生产,可以消费了 14 } 15 public synchronized Goods get() { 16 while(index == 0) {//缓冲区空 17 try { 18 this.wait(); //没有资源,等待 19 } catch (InterruptedException e) { } 20 } 21 index--; //资源个数减1 22 this.notify();//缓冲区有空间,生产者可以生产了 23 return buffer[index]; 24 } 25 } 1 class Producer implements Runnable {//生产者线程 2 private Stack s = null; 3 public Producer(Stack s) { this.s = s; } 4 Random random = new 5 Random(System.currentTimeMillis()); 6 public void run() { 7 for(;;) { Goods goodID = new Goods(random.nextInt(100)); s.put(goodID); //生产资源 10 System.out.println(生产: + goodID); 11 try {
您可能关注的文档
- word2003中表格的数据排序.ppt
- 安装、配置oracle应用服务器.ppt
- 白云技校计算机软件编程(JAVA方向)2013年春季招生简章.ppt
- 北大青鸟J2EE课件 4.ppt
- 北大青鸟Java1.ppt
- 北大青鸟-JSP教程 (6).ppt
- 编译原理 之 语法制导翻译和中间代码生成.ppt
- 编译原理-语法制导翻译生成中间代码.ppt
- 变量和运算.ppt
- 变数资料型态-JAVA程式语言入门.ppt
- 2025AACR十大热门靶点推荐和解读报告52页.docx
- 财务部管理报表.xlsx
- 高中物理新人教版选修3-1课件第二章恒定电流第7节闭合电路欧姆定律.ppt
- 第三单元知识梳理(课件)-三年级语文下册单元复习(部编版).pptx
- 俄罗斯知识点训练课件-七年级地理下学期人教版(2024).pptx
- 课外古诗词诵读龟虽寿-八年级语文上学期课内课件(统编版).pptx
- 高三语文二轮复习课件第七部分实用类文本阅读7.2.1.ppt
- 高考物理人教版一轮复习课件第4章第3讲圆周运动.ppt
- 高考英语一轮复习课件53Lifeinthefuture.ppt
- 2025-2030衣柜行业风险投资发展分析及投资融资策略研究报告.docx
最近下载
- 开封市检察机关聘用制书记员招聘笔试真题2023.docx VIP
- 易飞代理商高级生产应用认证考试(答案).docx VIP
- 工厂运营培训课件.pptx VIP
- 中国移动L1-L3等级认证(无线LTE网络优化)考试复习题库汇总-中(多选题汇总).docx VIP
- DB21_T 2977-2018低影响开发城镇雨水收集利用工程技术规程.docx
- 2024年贵州贵州省旅游产业发展集团有限公司招聘真题.docx VIP
- FPGA开发入门教程.pdf VIP
- 夏秋贵州省旅游产业发展集团有限公司员工招聘考试真题2024.docx VIP
- AWS D1.1-2020钢结构焊接规范(中英文版).pdf
- XX公司审计整改工作实施方案.doc VIP
文档评论(0)