《Java程序设计案例教程》教学课件08多线程并发编程.pdf
《《Java程序设计案例教程》教学课件08多线程并发编程.pdf》由会员分享,可在线阅读,更多相关《《Java程序设计案例教程》教学课件08多线程并发编程.pdf(36页珍藏版)》请在咨信网上搜索。
1、学习目标掌握有关线程的基本概念。掌握通过创建Thread类的子类和通过实现Runnable接口实现多线程的 方法。了解线程的状态和生命周期。了解线程优先级和线程调度。05了解线程同步的概念。技能目标2.能够在 MyEclipse IDE中编程实现Runnable接 口实现多线程。L 能够在 MyEclipseIDE中编程创建Thread类的,子类实现多线程。/3.能够在 MyEclipseIDE中编程实现线程同步。08回顾与思考多线程是Java的重要特性之一。如果一个程序是单线程的,那么,任何时刻都只 有一个执行点。这种单线程执行方法使系统的运行效率偏低,而且,由于必须依靠 中断来处理输入/输
2、出,所以,当出现频繁输入/输出或有优先级较低的中断请求时,实时性就变得很差。多线程系统可以避免这个缺点。所谓多线程,就是通过系统的 调用使几个具有不同功能的程序流即线程并行运行。多线程可以实现同一时刻执行 多个程序,使程序执行的效率变得更高。浏览器就是一个典型的多线程例子。在浏 览器中可以一边下载文件,一边播放音频和视频,一边打印文档等。多线程是实现 并发的一种有效手段。Java在平台上提供了对多线程的有效支持,利用语言和运行 支持系统提供的复杂同步机制,同时还确保了线程的安全性。8.2线程的使用8.2.1线程的基本结构表8-1 Thread类的常用构造方法及成员方法L继承Thread类(1)
3、Thread类。Thread 类是负责向其他类提供线程功 能的最主要的类,为了向一个 类增加线程功能,可以简单地 从Thread类派生一个类,并重 写run()方法。run()方法是线程 发生的地方,它常常被称为线 程体。Thread类的常用构造方 法及成员方法见表8-1。方 法方法的描述构造方法Thread()以默认值创建一个线程对象Thread(Runnable target)以定义Runnable接口的类对象创建一个线程对象Th read(String name)以指定的线程名创建一个线程对象Thread(Runnable targets String name)以定义Runnable接
4、口的类对象和指定的线程名创建一 个线程对象Thread currentThread()获得当前正在运行的线程对象String getName()获得线程名称int getPriorityO获得线程的优先级boolean isAliveC)测试线程是否运行结束void run()线程运行的主体,用户必须重写该方法void setName(String n)设置线程名称为nvoid setPriority(int n)更改线程的优先级为nvoid startO启动线程void yield()中止线程运行并将运行权交出void sleep(long n)使当前线程休眠n毫秒void joinO等待该
5、线程终止wait(long timeout)使线程等待,直到被唤醒notify()notifyAlK)唤醒指定线程或所有线程8.2线程的使用8.2.1线程的基本结构1.继承Thread类(2)用创建Thread类的子类实现多线程。若用这种 方法实现多线程,用户须在程序中创建Thread类的子类,并在子类中重写Thread类的run()方法来定义线程体以实现 线程的具体功能,然后创建该子类的对象以创建线程,当 用户创建的线程调用start。方法启动时,run()方法将被系 统自动执行。8.2线程的使用8.2.1线程的基本结构L继承Thread类【例81】通过定义Thread类的子类实现多线程。文
6、件名为Example8_Ljava,其代码 如下。运行结果如下。_其代码见P159-160。这是线程4!它的睡眠时间是100!这是线程3!它的睡眠时间是200!这是线程2!它的睡眠时间是300!这是线程1!它的睡眠时间是400!8.2线程的使用8.2.1线程的基本结构2.用实现Runnable接口实现多线程8.2线程的使用8.2.1线程的基本结构2.用实现Runnable接口实现多线程(1)仓!建实现Runnable接口的类ClassName。基本语法格式如下。class ClassName implements Runnable public void run()编写具体代码(2)创建Cla
7、ssName类的对象。基本语法格式如下。ClassName RunnableOb j ect=new ClassName();8.2线程的使用8.2.1线程的基本结构2.用实现Runnable接口实现多线程(3)用带有Runnable参数的Thread类构造方法仓!建线程对象,对象RunnableObject 作为构造方法的参数,作为新建线程的目标对象为线程提供run()方法。例如,用表8-1中列 出的构造方法Thread(Runnable target)创建线程对象。Thread Threadobject=new Thread(RunnableObject);Thread类中除了上述构造方法
8、带有 Runnable参数外,还有下面3个构造方 法也带有Ru nnabl e参数。Thread(Runnable target)Thread(ThreadGroup group,Runnable target)Thread(ThreadGroup group,Runnable target,String name)8.2线程的使用8.2.1线程的基本结构2.用实现Runnable接口实现多线程(4)启动定义的线程。基本语法格式如下。ThreadObject.start();与创建Thread类的子类实现多线程相比,通过Runnable接口实现多线程 方法为线程的创建提供了更大的灵活性。由于J
9、ava语言不允许多重继承,如果 采用创建Thread类的子类的方法创建新线程类,则该类不能再继承其他类,这就限制了程序的功能。而后一种方法却没有这方面的顾虑。8.2线程的使用8.2.1线程的基本结构2.用实现Runnable接口实现多线程【例82】通过实现Runnable接口实现多线程。文件名为Example8_2.java,其代码如下。其代码见P162-163。运行结果如下。我正在工作!我正在休息,喝咖啡!我正在工作!我正在工作!我正在工作!我正在工作!工作顺利完成!8.2线程的使用8.2.1线程的基本结构2.用实现Runnable接口实现多线程【例82】通过实现Runnable接口实现多线
10、程。文件名为Example8_2.java,其代码如下。其代码见P162-163。运行结果如下。我正在工作!我正在休息,喝咖啡!我正在工作!我正在工作!我正在工作!我正在工作!工作顺利完成!8.2线程的使用8.2.2线程的状态及调度每个Java程序都有一个默认的主线程。对于应用程序,主线程是main。方法执行的路径。对于Applet,主线程指挥浏览器加载并执行Java小程序。为实现多线程,必须在主线程中创建新的线程对象。Java线程是通过Java,lang包中的Thread类来实现的。可通过创建一个Th read类的对象来 产生一个新的线程。一个线程一旦产生,它就处于生命周期中的某一种状 态。
11、线程的状态表示了线程正在进行的活动及能够完成的任务。图8-1描述 了线程的生命周期及其状态转换。8.2线程的使用8.2.2线程的状态及调度start图8-1线程的生命周期及其状态转换出口从图8-1中可以看出,在一个线程从创建到消亡的整个生命周期中,总是处于下面5个状态中的某个状态。8.2线程的使用8.2.2线程的状态及调度11.新建状态:通过new关键字创建一个Thread类或其子类的线程对象时,该线程对象处于新建状态 o创建一个新的线程对象可以用下面的语句实现:Thread threadnew Thread();该语句是最简单的创建线程语句,但该语 句创建的线程是一个空的线程对象,系统还未
12、对这个线程分配任何资源8.2线程的使用8.2.2线程的状态及调度(2.就绪状态:就绪状态又可称为可运行状态。处于京 建状态的线程可通过调用sta代()方法来启动。sta rt()方法产生了线程运行所需要的系统资源 o启动后的线程将进入线程就绪队列排队等 待CPU服务,此时线程已经具备了运行的条 件,一旦获得CPU等资源,线程就可以脱离 创建它的主线程而独立运行。(3.运行状态:当处于就绪状态的线程被调度并获 得CPU资源时,线程就进入运行状态。每个线程对象都有一个重要的ru n()方法,run()方法定义了该线程的操作和功能o当线程对象被调度执行时,它将自动 调用其ru n()方法并从第一条语
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java程序设计案例教程 Java 程序设计 案例 教程 教学 课件 08 多线程 并发 编程
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【曲****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【曲****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。