- 1、本文档共52页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章 多线程 本章主要讲述如下内容: ? 多线程的概念; ? 线程的生命周期; ? 多线程编程中的常量和方法; ? 线程调度方法; ? 资源冲突与协调; ? 线程之间的通信。 9.1 Java中多线程的基本概念 在多线程模型中,多个线程共存于同一块内存中,且共享资源。 每个线程分配有限的时间片来处理任务。由于CPU在各个线程之间的切换速度非常快,用户感觉不到,从而认为并行运行。 9.1.1 多线程的特点 多个线程在运行时,系统自动在线程之间进行切换; 由于多个线程共存于同一块内存,线程之间的通信非常容易; Java将线程视为一个对象。线程要么是Thread类的对象,要么是接口Runnable的对象。 9.1.1 多线程的特点(续) 当多个线程并行执行时,具有较高优先级的线程将获得较多的CPU时间片; 优先级是从0到10的整数,并且它仅表示线程之间的相对关系; 多个线程共享一组资源,有可能在运行时产生冲突。必须采用synchronized关键字协调资源,实现线程同步。 9.2.1 多线程编程中常用的常量和方法 线程类Thread定义在java.lang包中; Thread类包含的常量有: 9.2.1 多线程编程中常用的常量和方法(续) 常用方法: 9.2.1 多线程编程中常用的常量和方法(续) 9.2.1 多线程编程中常用的常量和方法(续) 9.2.1 多线程编程中常用的常量和方法(续) 注意1:在创建线程对象时,缺省的线程优先级是5,一般设置优先级4到6之间,不要设置为10,否则其它线程将执行不到。 注意2:Java的调度器能使高优先级的线程始终运行,一旦CPU有空闲,具有同等优先级的线程,以轮流的方式顺序使用时间片。 9.2.2 线程的生命周期 9.2.3 创建多线程的方法 方法1:通过Thread类的子类实现多线程。 方法2:定义一个实现Runnable接口的类实现多线程。 9.2.3 创建多线程的方法(续) 方法1:通过创建Thread类的子类实现多线程,步骤如下 : 9.2.3 创建多线程的方法(续) 方法2:通过接口创建多线程,步骤如下: 9.2.3 创建多线程的方法(续) 程序9-3中需要注意的2点: 1. mt1.join( )是等待线程死亡,对该方法必须捕捉异常,或通过throws关键字指明可能要发生的异常。 2. 对一个线程不能调用start( )两次,否则会产生IllegalThreadStateException异常。 9.3.1 线程调度模型 线程调度程序挑选线程时,将选择处于就绪状态且优先级最高的线程。 如果多个线程具有相同的优先级,它们将被轮流调度。 程序9-4验证了Java对多线程的调度方法。 9.3.2 资源冲突 多个线程同时运行虽然可以提高程序的执行效率,但由于共享一组资源,可能会产生冲突,例如程序9-5 。 9.3.3 同步方法 Java通过关键字synchronized实现同步。 当对一个对象(含方法)使用synchronized,这个对象便被锁定或者说进入了监视器。在一个时刻只能有一个线程可以访问被锁定的对象。它访问结束时,让高优先级并处于就绪状态的线程,继续访问被锁定的对象,从而实现资源同步。 加锁的方法有两种:锁定冲突的对象,或锁定冲突的方法。 9.3.3 同步方法(续) 1. 锁定冲突的对象。语法格式: 9.3.3 同步方法(续) 2. 锁定冲突的方法。语法格式: 9.4 线程间通信 多线程通信的方法有两种: 1. 把共享变量和方法封装在一个类中实现; 2. 通过wait( )和notify( )方法实现。 9.4.1 通过封装共享变量实现线程通信 9.4.2 通过系统方法实现线程通信 线程同步控制的第二种方法是采用如下几个系统方法: 1.wait( )方法:使一个线程进入等待状态,直到被唤醒。 2.notify( )方法:通知等待监视器的线程,该对象的状态已经发生了改变。 3. notifyAll( )方法:唤醒从同一个监视器中用wait( )方法退出的所有线程,使它们按照优先级的顺序重新排队。例如程序9-7。 线程调度建议 线程进入等待队列的方式有:一、线程a正在使用某对象,线程b调用该对象的同步方法,则b进入队列;二、调用wait( )方法使线程进入队列。 当一个同步方法调用返回时,或一个方法调用了wait( )方法时,另一线程就可访问冲突的对象。 线程调度程序在队列中选取优先级最高的线程。 如果一个线程因调用wait( )而进入队列,则必须调用notify( )才能“解冻”该线程。 思考和练习 P169 1~3 程序输出结
您可能关注的文档
- Excel在统计分析中的应用 教学课件 ppt 作者 陈斌第9章.pptx
- Excel在统计分析中的应用 教学课件 ppt 作者 陈斌第10章.pptx
- Excel在统计分析中的应用 教学课件 ppt 作者 陈斌第11章.pptx
- Excel在统计分析中的应用 教学课件 ppt 作者 陈斌第12章.pptx
- HTML网页设计 教学课件 ppt 作者 翁高飞、王鹏chapter5.ppt
- HTML网页设计 教学课件 ppt 作者 翁高飞、王鹏chapter6.ppt
- 房地产营销 教学课件 ppt 作者 朱华 第1章.ppt
- HTML网页设计 教学课件 ppt 作者 翁高飞、王鹏chapter8.pptx
- Internet简明教程(第四版 教学课件 ppt 作者第01章 Internet基础知识.ppt
- Internet简明教程(第四版 教学课件 ppt 作者第02章 将计算机连接到Internet.ppt
- 第16课+国家出路的探索与列强侵略的加剧高一上学期统编版(2019)必修中外历史纲要上.pptx
- 2025届高考政治冲刺精准复习 我国的根本政治制度.pptx
- 2025届新高考历史冲刺精准复习中国近代资产阶级救亡图存运动.pptx
- 2025届高考政治冲刺精准复习全面依法治国.pptx
- 2025届高考政治冲刺精准复习我国的基本政治制度.pptx
- 第8课+三国至隋唐的文化高一上学期历史统编版(2019)必修中外历史纲要上+.pptx
- 2025届新高考历史冲刺精准复习国家出路的探索与挽救民族危亡的斗争.pptx
- 2025届新高考历史冲刺精准复习中国特色社会主义的开创与发展.pptx
- 第14课+历史上的疫病与医学成就+高二历史统编版(2019)选择性必修2.pptx
- 2025届高考政治冲刺精准复习 我国的基本政治制度.pptx
文档评论(0)