- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java程序设计(郑莉)-第8章3.0汇总.ppt
* notify() 随机唤醒一个等待的线程,本线程继续执行 线程被唤醒以后,还要等发出唤醒消息者释放监视器,这期间关键数据仍可能被改变 被唤醒的线程开始执行时,一定要判断当前状态是否适合自己运行 notifyAll() 唤醒所有等待的线程,本线程继续执行 8.1 多线程编程基础 8.1.6 线程之间的通信(续)——notify()和notifyAll()方法 * 修改例8-9,使每存入一张票,就售一张票,售出后,再存入 class Tickets { …… public synchronized void put() { if(available) //如果还有存票待售,则存票线程等待 try{ wait();} catch(Exception e){} System.out.println(Producer puts ticket +(++number)); available=true; notify(); //存票后唤醒售票线程开始售票 } public synchronized void sell() { if(!available) //如果没有存票,则售票线程等待 try{ wait();} catch(Exception e){} System.out.println(Consumer buys ticket +(number)); available=false; notify(); //售票后唤醒存票线程开始存票 if (number==size) number=size+1 ; //在售完最后一张票后, //设置一个结束标志,numbersize表示售票结束 } } 8.1 多线程编程基础 8.1.6 线程之间的通信(续)——例8-10 * class Producer extends Thread { Tickets t=null; public Producer(Tickets t) { this.t=t; } public void run() { while(t.numbert.size) t.put(); } } class Consumer extends Thread { Tickets t=null; public Consumer(Tickets t) { this.t=t; } public void run() { while(t.number=t.size) t.sell(); } } 8.1 多线程编程基础 8.1.6 线程之间的通信(续)——例8-10 * 运行结果 Producer puts ticket 1 Consumer buys ticket 1 Producer puts ticket 2 Consumer buys ticket 2 Producer puts ticket 3 Consumer buys ticket 3 Producer puts ticket 4 Consumer buys ticket 4 Producer puts ticket 5 Consumer buys ticket 5 Producer puts ticket 6 Consumer buys ticket 6 Producer puts ticket 7 Consumer buys ticket 7 Producer puts ticket 8 Consumer buys ticket 8 Producer puts ticket 9 Consumer buys ticket 9 Producer puts ticket 10 Consumer buys ticket 10 8.1 多线程编程基础 8.1.6 线程之间的通信(续)——例8-10运行结果 * 程序说明 当Consumer线程售出票后,available值变为false,当Producer线程放入票后,available值变为true 只有available为true时,Consumer线程才能售票,否则就必须等待Producer线程放入新的票后的通知 只有available为false时,Producer线程才能放票,否则必须等待Consumer线程售出票后的通知 8.1 多线程编程基础 8.1.6 线程之间的通信
您可能关注的文档
- An Introduction to Exchange Rate Determination and arbitrage(国际金融-香港大学,WONG Ka Fu)2.0汇总.ppt
- Arduino 编程2.0汇总.ppt
- AR定位的原理2.0汇总.doc
- AR技术在制造业中的应用2.0汇总.ppt
- atx1.16装机教程参考2.0汇总.doc
- AUTOCAD2007教程绘制三维网格和实体2.0汇总.ppt
- B9破解使用教程(离线版V1.2)2.0汇总.doc
- BA000002 TCPIP基础 ISSUE1.22.0汇总.ppt
- Balance of Payments(国际金融-香港大学,WONG Ka Fu)2.0汇总.ppt
- C++基础教程 Web 编程 网页浏览、CGI 架构图2.0汇总.ppt
文档评论(0)