欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    java面向对象程序设计第2版第15章-java多线程机制.ppt

    • 资源ID:6510305       资源大小:213.49KB        全文页数:18页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    java面向对象程序设计第2版第15章-java多线程机制.ppt

    Java面向对象程序设计第2版第15章,配合第2版 例子源代码一起使用,Power point 制作:耿祥义 张跃平,Java多线程机制,主要内容Java中的线程Thread子类创建线程使用Runnable接口线程的常用方法GUI线程线程同步在同步方法中使用wait()、notify 和notifyAll()方法计时器线程线程联合守护线程难点线程同步,导读,多线程是指同时存在几个执行体,按几条不同的执行线索共同工作的情况,它使得编程人员可以很方便地开发出具有多线程功能、能同时处理多个任务的功能强大的应用程序。Java虚拟机(JVM)负责管理这些线程,这些线程将被轮流执行,使得每个线程都有机会使用CPU资源。,概述,15.1 Java中的线程 15.1.1 程序、进程与线程,程序是一段静态的代码,它是应用软件执行的蓝本。进程是程序的一次动态执行过程,它对应了从代码加载、执行至执行完毕的一个完整过程,这个过程也是进程本身从产生、发展至消亡的过程。线程是比进程更小的执行单位。,15.1.2 线程的状态与生命周期,建的线程在它的一个完整的生命周期中通常要经历如下的四种状态:1新建:当一个Thread类或其子类的对象被声明并创建时,新生的线程对象处于新建状态。2运行:线程必须调用start()方法(从父类继承的方法)通知JVM,这样JVM就会知道又有一个新一个线程排队等候切换了。一旦轮到它来享用CPU资源时,此线程的就可以脱离创建它的主线程独立开始自己的生命周期了。3中断:有4种原因的中断:JVM将CPU资源从当前线程切换给其他线程,使本线程让出CPU的使用权处于中断状态。线程使用CPU资源期间,执行了sleep(int millsecond)方法,使当前线程进入休眠状。线程使用CPU资源期间,执行了wait()方法。线程使用CPU资源期间,执行某个操作进入阻塞状态。4死亡:处于死亡状态的线程不具有继续运行的能力。线程释放了实体。例题15-1,15.1.3 线程调度与优先级,处于就绪状态的线程首先进入就绪队列排队等候CPU资源,同一时刻在就绪队列中的线程可能有多个。Java虚拟机(JVM)中的线程调度器负责管理线程,调度器把线程的优先级分为10个级别,分别用Thread类中的类常量表示。Java调度器的任务是使高优先级的线程能始终运行,一旦时间片有空闲,则使具有同等优先级的线程以轮流的方式顺序使用时间片。,15.2 Thread的子类创建线程,在编写Thread类的子类时,需要重写父类的run()方法,其目的是规定线程的具体操作,否则线程就什么也不做,因为父类的run()方法中没有任何操作语句。例题15-2,15.3使用Runnable接口 Runnable接口与目标对象,创建线程的另一个途径就是用Thread类直接创建线程对象。使用Thread创建线程对象时,通常使用的构造方法是:Thread(Runnable target);该构造方法中的参数是一个Runnable类型的接口。在创建线程对象时必须向构造方法的参数传递一个实现Runnable接口类的实例,该实例对象称作所创线程的目标对象,当线程调用start()方法后,一旦轮到它来享用CPU资源,目标对象就会自动调用接口中的run()方法(接口回调)。例题15-3,15.3.2 关于run方法中的局部变量,对于具有相同目标对象的线程,当其中一个线程享用CPU资源时,目标对象自动调用接口中的run方法,这时,run方法中的局部变量被分配内存空间,当轮到另一个线程享用CPU资源时,目标对象会再次调用接口中的run方法,那么,run()方法中的局部变量会再次分配内存空间。例题15-4,15.3.3 在线程中启动其它线程,线程通过调用start()方法将启动该线程,使之从新建状态进入就绪队列排队,一旦轮到它来享用CPU资源时,就可以脱离创建它的主线程独立开始自己的生命周期了。可以在任何一个线程中启动另外一个线程。例题15-5,15.4 线程的常用方法,1start():线程调用该方法将启动线程,使之从新建状态进入就绪队列排队,一旦轮到它来享用CPU资源时,就可以脱离创建它的线程独立开始自己的生命周期了。2run():Thread类的run()方法与Runnable接口中的run()方法的功能和作用相同,都用来定义线程对象被调度之后所执行的操作,都是系统自动调用而用户程序不得引用的方法。3sleep(int millsecond):优先级高的线程可以在它的run()方法中调用sleep方法来使自己放弃CPU资源,休眠一段时间。4isAlive():线程处于“新建”状态时,线程调用isAlive()方法返回false。在线程的run()方法结束之前,即没有进入死亡状态之前,线程调用isAlive()方法返回true。例题15-6 5currentThread():该方法是Thread类中的类方法,可以用类名调用,该方法返回当前正在使用CPU资源的线程。6interrupt():一个占有CPU资源的线程可以让休眠的线程调用interrupt()方法“吵醒”自己,即导致休眠的线程发生InterruptedException异常,从而结束休眠,重新排队等待CPU资源。例题15-7,15.5 GUI线程,当Java程序包含图形用户界面(GUI)时,Java虚拟机在运行应用程序时会自动启动更多的线程,其中有两个重要的线程:AWT-EventQuecue和AWT-Windows。AWT-EventQuecue线程负责处理GUI事件,AWT-Windows线程负责将窗体或组件绘制到桌面。例题15-8,例题15-9,15.6 线程同步,在处理多线程问题时,我们必须注意这样一个问题:当两个或多个线程同时访问同一个变量,并且一个线程需要修改这个变量。我们应对这样的问题作出处理。在处理线程同步时,要做的第一件事就是要把修改数据的方法用关键字synchronized来修饰。所谓线程同步就是若干个线程都需要使用一个synchronized修饰的方法。例题15-10,15.7 在同步方法中使用wait()、notify 和otifyAll()方法,wait()方法可以中断方法的执行,使本线程等待,暂时让出CPU的使用权,并允许其它线程使用这个同步方法。notifyAll()方法通知所有的由于使用这个同步方法而处于等待的线程结束等待。曾中断的线程就会从刚才的中断处继续执行这个同步方法,并遵循“先中断先继续”的原则。notify()方法只是通知处于等待中的线程的某一个结束等待。例题15-11,例题15-12,15.8 计时器线程Timer,当某些操作需要周期性地执行,就可以使用计时器。Timer类的构造方法:Timer(int a,Object b);计时器发生的震铃事件是ActinEvent类型事件。相关方法:start()启动计时器,即启动线程。stop()停止计时器,即挂起线程。restart()重新启动计时器,即恢复线程。例题15-13,15.9 线程联合,一个线程A在占有CPU资源期间,可以让其它线程调用join()和本线程联合,如:B.join();我们称A在运行期间联合了B。例题15-14,15.10 守护线程,线程默认是非守护线程,非守护线程也称作用户(user)线程。一个线程调用void setDaemon(boolean on)方法可以将自己设置成一个守护(Daemon)线程,例如:thread.setDaemon(true);例题15-15,15.11 小结,1线程是比进程更小的执行单位。一个进程在其执行过程中,可以产生多个线程,形成多条执行线索,每条线索,即每个线程也有它自身的产生、存在和消亡的过程,也是一个动态的概念。2Java虚拟机(JVM)中的线程调度器负责管理线程,在采用时间片的系统中,每个线程都有机会获得CUP的使用权。当线程使用CUP资源的时间到时后,即使线程没有完成自己的全部操作,Java调度器也会中断当前线程的执行,把CUP的使用权切换给下一个排队等待的线程,当前线程将等待CUP资源的下一次轮回,然后从中断处继续执行。3线程创建后仅仅是占有了内存资源,在JVM管理的线程中还没有这个线程,此线程必须调用start()方法(从父类继承的方法)通知JVM,这样JVM就会知道又有一个新一个线程排队等候切换了。4.线程同步是指几个线程都需要调用同一个同步方法(用synchronized修饰的方法)。一个线程在使用的同步方法中时,可能根据问题的需要,必须使用wait()方法暂时让出CPU的使用权,以便其它线程使用这个同步方法。其它线程如果在使用这个同步方法时如果不需要等待,那么它用完这个同步方法的同时,应当执行notifyAll()方法通知所有的由于使用这个同步方法而处于等待的线程结束等待。,

    注意事项

    本文(java面向对象程序设计第2版第15章-java多线程机制.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开