第8章 的线程.ppt

  1. 1、本文档共38页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章 的线程

* * * * * * 在下面的例子8中,有3个线程:zhangXiao、zhengMing和teacher,其中2个线程:zhangXiao和zhengMing准备休眠10秒钟后,再分别输出“早上好!”和“good morning!”。teacher线程在输出3句“上课”后,“吵醒”休眠的线程:zhangXiao和zhengMing。 返回 8.7 线程同步 线程同步是指多个线程要执行一个synchronized修饰的方法,如果一个线程A占有CPU资源期间,使得synchronized方法被调用执行,那么在该synchronized方法返回之前,即synchronized方法调用执行完毕之前,其他占有CPU资源的线程一旦调用这个synchronized方法就会引起堵塞,堵塞的线程要一直等到堵塞的原因消除( synchronized方法返回),再排队等待CPU资源,以便使用这个同步方法。 在下面的例子9中有两个线程:accountant和cashier,他俩共同拥有一个帐本。他俩都可以使用saveOrTake(int number)对帐本进行访问,会计使用saveOrTake方法时,向帐本上写入存钱记录;出纳使用saveOrTake方法时,向帐本写入取钱记录。因此,当会计正在使用saveOrTake方法时,出纳被禁止使用,反之也是这样。 返回 8.8 在同步方法中使用wait()、notify和notifyall wait()、notify()和notifyAll()都是Object类中的final方法,被所有的类继承,且不允许重写的方法。 当一个线程使用的同步方法中用到某个变量,而此变量又需要其它线程修改后才能符合本线程的需要,那么可以在同步方法中使用wait()方法。使用wait()方法可以中断方法的执行,使本线程等待,暂时让出CPU的使用权,并允许其它线程使用这个同步方法。其它线程如果在使用这个同步方法时不需要等待,那么它使用完这个同步方法的同时,应当用notifyAll()方法通知所有的由于使用这个同步方法而处于等待的线程结束等待。 在下面的例子10中,模拟3个人排队买票,每人买1张票。售票员只有1张五元的钱,电影票五元钱一张。张某拿1张二十元的人民币排在孙某前面买票,孙某拿1张十元的人民币排在赵的前面买票,赵某拿1张五元的人民币排在最后。那么,最终的卖票次序应当是孙、赵、张 。 返回 8.9 挂起、恢复和终止线程 在下面的例子11中,线程thread每隔一秒钟输出一个整数,输出3个整数后,该线程挂起;主线程负责恢复thread线程继续执行。 面的例子12中,thread是用Thread的子类创建的对象,每隔一秒钟输出一个整数,输出3个整数后,该线程挂起。主线程负责恢复thread线程继续执行。 8.10 线程联合 一个线程A在占有CPU资源期间,可以让其它线程调用join()和本线程联合, 如: B.join(); 我们称A在运行期间联合了B。如果线程A在占有CPU资源期间一旦联合B线程,那么A线程将立刻中断执行,一直等到它联合的线程B执行完毕,A线程再重新排队等待CPU资源,以便恢复执行。如果A准备联合的B线程已经结束,那么B.join()不会产生任何效果。 在下面的例子13中,一个线程在运行期间联合了另外一个线程。 返回 8.10 守护线程 一个线程调用 void setDaemon(boolean on) 方法可以将自己设置成一个守护(Daemon)线程,例如: thread.setDaemon(true); 线程默认是非守护线程,非守护线程也称作用户(user)线程。 当程序中的所有用户线程都已结束运行时,即使守护线程的run方法中还有需要执行的语句,守护线程也立刻结束运行。一般地,用守护线程做一些不是很严格的工作,线程的随时结束不会产生什么不良的后果。一个线程必须在运行之前设置自己是否是守护线程。 下面的例子14中有一个守护线程 返回 * * * * * * * * * * * * * * * * * * * * * * * * 第八章 线程 ?本章导读 1. Java中的线程 2. 线程的生命周期 3. 线程的优先级与调度管理 4. Thread的子类创建线程 5.线程的常用方法 6.使用Runable接口 7.线程同步 8.在同步方法中使用wait()、notify 和notifyAll 9.线程的联合 10.守护线程 8.1 Java中的线程 程序是一段静态的代码,它是应用

文档评论(0)

liwenhua00 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档