第12章多线程试卷.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
12.1进程和线程 12.2线程的创建与启动 12.3线程的状态与生命周期 12.4线程的调度和优先级 12.5线程同步 12.6线程通信 12.7线程死锁 12.8线程联合 12.9计时器线程 12.10守护线程 ;本章教学目标: ;12.1进程和线程;? 2.进程 进程是获取系统资源动态执行程序的一次过程。这个过程也是进程本身从产生、发展到最终消亡的过程。每个进程都有自己的内存空间。 多进程是指在操作系统中同时执行的多个应用程序。现代的多进程操作系统可以同时管理计算机系统中的多个进程(程序),每个进程都拥有独立的系统资源,进程之间一般不相互占用系统资源,所以进程之间的通信一般比较困难。多进程运行和程序开发没有关系,多进程运行是由操作系统实现的。 ;3.线程 线程是比进程更小的执行单位,它不是进程,但其行为很像进程。线程是在进程独立内存区域内部独立执行的流程,即线程是进程中的一段代码。一个进程在其执行过程中可以产生多个线程,这些线程可以同时存在、同时运行,形成多条执行线索,每条线索(即每个线程)都有其自身的产生、发展和消亡的过程。每个线程都有自己独立的运行栈和程序计数器。; ; ;12.2 线程的创建与启动; ; ; ; ;实例12-3 sleep(int millsecond) 方法和interrupt()方法的联合应用:本例中有两个线程:student和teacher,其中student准备睡十分钟再开始上课,teacher在输出三句“上课了”之后,吵醒休眠的线程student。 ;12.3 线程的状态与生命周期;12.4线程的调度和优先级; ;12.5线程同步; ;2. Synchronized关键字的用法 (1)用于修饰方法:同步方法 public synchronized void method(){ } (2)用于修饰代码块:同步块 synchronized(syncObject){ } (3)用于修饰一个类 public synchronized class SyncObject{ } ;12.6 线程通信;2. notify()方法 调用notify()方法时可以随机选择一个在该对象调用wait()方法的线程,解除它的阻塞。 3. notifyAll()方法 调用notifyAll()方法可以唤醒等待该对象的所有线程。但唤醒时无法控制唤醒哪个线程,唤醒过程完全由系统来控制。 实例12-7通过生产/消费模型演示线程通信。 ;12.7线程死锁;12.8线程联合;如果线程A在占有CUP资源期间一旦联合B线程,那??A线程将立刻中断执行,一直等到它联合的线程B执行完毕,A线程再重新排队等待CUP资源,以便恢复执行。 如果线程A准备联合的线程B已经结束,那么B.join()不会产生任何效果 实例12-9使用线程联合编程模拟顾客等待蛋糕师傅制作生日蛋糕的过程。;12.9计时器线程;2. Timer类的常用方法 计时器创建之后,可以使用Timer类的提供的start()方法、stop()方法、restart()操作计时器。 其中: start()方法:启动计时器,也就是线程的启动。 stop()方法:停止计时器,也就是线程挂起。 restart():重新启动计时器,也就是恢复线程。 实例12-10利用Timer类编程实现:单击窗口中的“开始”按钮启动计时器,并将时间显示在文本框中;单击“暂停”按钮计时器暂时停止计时;单击“继续”按钮重新启动计时器。 ;12.10守护线程;

文档评论(0)

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

我是自由职业者,从事文档的创作工作。

1亿VIP精品文档

相关文档