java教程实现多线程.ppt

  1. 1、本文档共58页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
java教程实现多线程.ppt

第7章 实现多线程 本课教学内容 多线程基本概念 单线程应用程序 多线程应用程序 线程生命周期 多线程方法 线程优先级 线程的同步 线程的内部通信 问题陈述 应用场景 我们需要在显示顾客信息的窗口上显示当前的日期和时间,以方便旅馆的管理。如下图所示: 多线程基本概念 序言 一个进程就是一个执行中的程序,而每一个进程都有自己独立的一块内存空间、一组系统资源。在进程概念中,每一个进程的内部数据和状态都是完全独立的。 Java程序通过流控制来执行程序流,程序中单个顺序的流控制称为线程,多线程则指的是在单个程序中可以同时运行多个不同的线程,执行不同的任务。多线程意味着一个程序的多行语句可以看上去几乎在同一时间内同时运行。 多线程基本概念 线程与进程的区别 进程:每个进程都有独立的代码和数据空间(进程上下文),进程切换的开销大。 线程:轻量的进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换的开销小。 多进程:在操作系统中,能同时运行多个任务程序。 多线程:在同一应用程序中,有多个顺序流同时执行。 多线程基本概念 线程的概念 一个线程是一个程序内部的顺序控制流。 线程相似于顺序程序。顺序程序有开始,执行顺序和结束。线程也有开始,执行顺序和结束。然而,线程不是独立的程序但是能在程序内运行。每个程序最少有一个线程称为主要线程。在需要时能创建更多的线程。 多线程基本概念 Java中的多线程 Java内在支持多线程,它的所有类都是在多线程下定义的,Java利用多线程使整个系统成为异步系统。Java中的线程由三部分组成: 虚拟的CPU,封装在java.lang.Thread类中。 CPU所执行的代码,传递给Thread类。 CPU所处理的数据,传递给Thread类。 多线程基本概念 单线程和多线程应用程序 由一个线程组成的进程是单线程。单线程应用程序同时只能执行一个任务。必须等候一个任务完成才能开始另一个任务。 有超过一个线程的进程是多线程。进程中的多线程同时运行,执行不同任务,并且相互影响。 单线程应用程序 创建单线程应用程序 创建的每个程序至少有一个线程。用Thread类的currentThread()方法访问该线程。这方法是静态方法因而不必创建Thread类对象来调用这方法。 例子 单线程应用程序 代码解释 在上方显示的应用程序中,当前线程用currentThread()方法获得。每次线程打印计数器的值,线程被设为睡眠1000毫秒(1秒)。线程可以引发异常如果有另一个线程中断睡眠。因此,sleep()方法被保护在try块里。 多线程应用程序 创建多线程应用程序 能用下面列出的两种方法在程序里创建多线程: 子类化Thread类。 实现Runnable接口。 多线程应用程序 Thread类 java.lang.Thread类用于在多线程应用程序构造和访问单个的多线程。 它支持许多方法获得有关线程的活动信息,线程的设置和检查属性,引起线程等待,中断或破坏的信息。由扩充Thread类能使应用程序和类运行在独立的多线程里。 例子 多线程应用程序 Runnable接口 Java不支持多重继承,不能从JFrame类和Thread类派生类。 Java提供Runnable接口来解决多重继承的问题。Runnable接口包含单个方法run(),当线程激活时执行。现在能从JFrame类扩展,实现Runnable接口和标记run()方法。 例子 线程生命周期 下图表示了Java线程的不同状态以及状态之间转换所调用的方法。 线程生命周期 创建状态(new Thread) 执行下列语句时,线程就处于创建状态: Thread myThread = new MyThreadClass( ); 当一个线程处于创建状态时,它仅仅是一个空的线程对象,系统不为它分配资源。 线程生命周期 可运行状态( Runnable ) 执行下列语句时,线程就处于创建状态: Thread myThread = new MyThreadClass( ); myThread.start( ); 当一个线程处于可运行状态时,系统为这个线程分配了它需的系统资源,安排其运行并调用线程运行方法,这样就使得该线程处于可运行( Runnable )状态。 线程生命周期 不可运行状态(Not Runnable) 不可运行状态也称为阻塞状态(Blocked)。因为某种原因(输入/输出、等待消息或其它阻塞情况),系统不能执行线程的状态。这时即使处理器空闲,也不能执行该线程。 进入不可运行状态的原因有如下几条: 调用了sleep(

文档评论(0)

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

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

1亿VIP精品文档

相关文档