第四章线程间通信资料.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第四章 线程间通信 概述 线程作为程序内部的多个执行流,相互之间是可以进行通信的。线程间的通信可以通过多种方式来进行。 例如,线程间可以通过共享变量来进行通信,使每个线程根据共享变量的值进行操作和运算;线程间也可以通过wait、notify、notifyAll方法进行通信。 4-1 等待集合(Wait-sets) 每一个类的对象实例都有一个等待集合,当在该实例上调用方法wait后,线程都会进入该实例的等待集合中。除非发生下列情况,都则其会一直待在等待集合中。 (1)其他线程调用了方法notify或notifyAll; (2)其他线程调用了方法interrupt中断了该线程; (3)方法wait的等待时间结束 4-2 wait、notify、notifyAll方法 Wait、notify、notifyAll都是类Object中定义的方法,Java中的类都是类Object的子类,因此在Java中任何类都可以调用这些方法,但这些方法更多的是在多线程环境中使用。 4.2.1 方法wait wait调用的一般形式是: 对象名.wait(); 称为线程在对象上的等待,其作用是把当前线程放到对象的等待集合中。 4.2.2 方法notify notify调用的一般形式是: 对象名.notify(); 当调用某个对象的方法notify时,将从该对象等待集合中选择一个等待的线程唤醒,唤醒的线程将从等待的集合中删除。 4.2.3 方法notifyAll notifyAll调用的一般形式是: 对象名.notifyAll(); 注意:方法notifayAll可唤醒所有的线程,而notify只唤醒了一个线程。 4.3 条件变量 线程进入临界区后,往往需要等待某个条件满足才能继续执行。 例如,消费者 产品,用户 银行卡 取款 在JDK1.5之前,主要使用wait,notify,notifyAll执行条件操作中的等待,唤醒机制,从JDK1.5开始,引入了条件变量(Condition Variables)。条件变量也称为条件队列,由接口Condition定义的,它可以让一个线程在不满足条件的情况下一直等待,知道有线程唤醒它。 接口Condition的常用方法 * * 方法 含义 void await() 使当前线程在被唤醒或被中断之前一直处于等待的状态 void signal() 唤醒一个等待线程 void signalAll() 唤醒所有等待线程 *

文档评论(0)

558955999 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档