网站大量收购闲置独家精品文档,联系QQ:2885784924

Java程序设计教学做一体化教程第10章多线程.ppt

Java程序设计教学做一体化教程第10章多线程.ppt

  1. 1、本文档共52页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
配合例子源代码一起使用 主要内容 10.1 Java中的线程 10.1.1核心知识 _1 10.1.1 核心知识 _2 10.1.1 核心知识 _3 10.1.1 核心知识 _4 10.1.2 能力目标 10.1.3 任务驱动 任务小结 10.1.4 实践环节 10.2 Thread类与线程的创建 10.2.1 核心知识_1 10.2.1 核心知识 _2 10.2.2 能力目标 10.2.3 任务驱动 任务 小结 10.2.4 实践环节 10.3 线程间共享受数据 10.3.1 核心知识_1 10.3.1 核心知识 _2 10.3.2 能力目标 10.3.3 任务驱动 任务 小结 10.3.4 实践环节 10.4 线程的常用方法 10.4.1 核心知识 10.4.2 能力目标 10.4.3 任务驱动 任务 小结 10.5 线程同步 10.5.1 核心知识 10.5.2 能力目标 10.5.3 任务驱动 任务 小结 10.6 协调同步的线程 10.6.1 核心知识 10.6.2 能力目标 10.6.3 任务驱动 任务 小结 10.6.4 实践环节 10.7 线程联合 10.7.1 核心知识 10.7.2 能力目标 10.7.3 任务驱动 任务 小结 10.8 计时器线程 10.8.1 核心知识 10.8.2 能力目标 10.8.3 任务驱动 任务 小结 10.8.4 实践环节 10.9 GUI线程 10.9.1 核心知识 10.9.2 能力目标 10.9.3 任务驱动 任务 小结 10.9.4 实践环节 10.10 小结 1.同步引发的问题 当一个线程使用同步方法时,其他线程想使用这个同步方法时就必须等待,直到当前线程使用完该同步方法。 对于同步方法,有时涉及到某些特殊情况下,线程同步机制影响了程序继续执行下去。 2.同步方法中使用wait()和notify()方法 当一个线程使用的同步方法中用到某个变量,而此变量又需要其它线程修改后才能符合本线程的需要,那么可以在同步方法中使用wait()方法。 wait ()方法可以中断方法的执行,使本线程等待,暂时让出CPU的使用权,并允许其它线程使用这个同步方法。 其它线程如果在使用这个同步方法时不需要等待,那么它使用完这个同步方法的同时,应当用notifyAll()方法通知所有的由于使用这个同步方法而处于等待的线程结束等待,曾中断的线程就会从刚才的中断处继续执行这个同步方法。如果使用notify()方法,那么只是通知处于等待中的线程的某一个结束等待。 能使用wait和notify方法协调同步的线程 。 将下列Application10_9.java中的【代码】替换为程序代码。 TicketHouse.java 运行效果如图10.11。 (1)在许多实际问题中wait方法应当放在一个“while(等待条件){}”的循环语句中,而不是“if(等待条件){}”的分支语句中。在同步方法中不应当使用sleep方法来协调同步的线程(非常不合理),如果将其中的“wait();”改为“Thread.sleep(3000);”,那么美女永远无法买到票。 (2)wait()、notify()和notifyAll()都是Object类中的final方法,被所有的类继承、且不允许重写的方法。特别需要注意的是,不可以在非同步方法中使用wait()、notify()和notifyAll()。 请仔细阅读和调试下列代码,注意程序的运行效果。 Application10_10.java Number.java 一个线程在占有CPU资源期间,可以让其它线程调用join()和本线程联合,比如,线程A希望联合线程B,那么线程A在占有CPU资源期间,可通过执行如下代码来联合线程B: B.join(); 线程A在占有CPU资源期间一旦联合B线程,那么A线程将立刻中断执行,一直等到它联合的线程B执行完毕,A线程再重新排队等待CPU资源,以便恢复执行。 如果A准备联合的B线程已经结束,那么B.join()不会产生任何效果。 通过线程联

文档评论(0)

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

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

1亿VIP精品文档

相关文档