- 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 {
您可能关注的文档
- 标识符与数据类型.ppt
- 组合数学课件--第二节第四节 整数的拆分.ppt
- 第一章 LINUX编译及调试.ppt
- 第09章 事务与锁.ppt
- 第7节 设计数据完整性.ppt
- 第8节 网络基础.ppt
- 维护工作常见问题和解决办法.doc
- 2Linux用户接口.ppt
- 第十章 A-D及D-A转换器接口.ppt
- 第二篇 计量单位.ppt
- 浙江衢州市卫生健康委员会衢州市直公立医院高层次紧缺人才招聘11人笔试模拟试题参考答案详解.docx
- 浙江温州泰顺县退役军人事务局招聘编外工作人员笔试备考题库及参考答案详解一套.docx
- 江苏靖江市数据局公开招聘编外工作人员笔试模拟试题及参考答案详解.docx
- 广东茂名市公安局电白分局招聘警务辅助人员40人笔试模拟试题带答案详解.docx
- 江苏盐城市大丰区住房和城乡建设局招聘劳务派遣工作人员4人笔试模拟试题带答案详解.docx
- 浙江舟山岱山县东沙镇人民政府招聘笔试模拟试题及参考答案详解1套.docx
- 最高人民检察院直属事业单位2025年度公开招聘工作人员笔试模拟试题含答案详解.docx
- 浙江金华市委宣传部、中共金华市委网信办所属事业单位选调工作人员笔试备考题库及答案详解1套.docx
- 广东深圳市党建组织员招聘40人笔试模拟试题及答案详解1套.docx
- 江苏南京水利科学研究院招聘非在编工作人员4人笔试模拟试题及参考答案详解.docx
最近下载
- 《中国结核病预防控制工作技术规范(2020年版)》.PDF VIP
- 2023年北京市中考英语真题(含答案) .pdf VIP
- 南通大学2023-2024学年《病理学》期末考试试卷(A卷)附参考答案.docx
- 胸部损伤-教学课件.ppt VIP
- 某银行数据中心搬迁整体实施方案.pdf VIP
- 麦肯锡中国银行业CEO季刊(2020年秋)-麦肯锡-224页正式版.pdf VIP
- 国家公务员录用考试体检标准.doc VIP
- 入党申请书时事政治精选五篇.docx VIP
- 农村公路安全生命防护工程监理规划49943.doc VIP
- 高中英语3500词【打印版】乱序版3500词汇(带音标120页).pdf VIP
文档评论(0)