第十章多线程讲述.ppt

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java程序设计 第十章 多线程 本讲内容 11.1 线程的概念 11.2 线程的状态 11.3 多线程编程 11.4 线程同步 11.1 线程的概念 人们常说做事情要一心一意,不能三心二意。 在现实世界中,其实很多事情可以并发执行的。比如,人体在接受外界信息时,视觉、嗅觉、听觉、味觉、触觉这些感知器官统统都是并发执行的。所谓眼观六路、耳听八方。 随着科学技术的发展,计算机也进入了三心二意的时代。大家在使用计算机的时候,可以同时运行两个甚至两个以上的程序:比如一边听歌、一边上网看新闻,还可以同时下载电影。 11.1 线程的概念 那么计算机中怎样才可以实现多个程序的同时运行呢? 虽然,在计算机中这些程序似乎同时在运行,但事实并非如此。 除非你的计算机上装有两个 CPU (双核处理器),否则同一时刻只能运行一个程序。 11.1 线程的概念 如果 CPU 只有一个,这时就遇到这样的问题,到底怎样才能既听歌又能看网页呢? 操作系统的进程并发机制可以帮助我们实现这一目的。 实际情况是由操作系统负责管理 CPU 等硬件资源的分配,通过采用时间片原理,以非常小的时间间隔交替执行多个程序。 因此,给我们大家一种多个程序被同时执行的错觉,即并发执行。 我们把支持并发执行的操作系统称为多任务操作系统。 操作系统不仅要管理计算机的各个硬件资源(例如CPU)的分配,还要管理软件的执行。 操作系统对于程序的管理是通过这样一种方式,即为每个程序都建立一个进程,然后通过对进程进行管理从而间接的管理程序。 每个进程又可以进一步细分成多个线程,多线程意味着一个程序的多行语句同时执行。 程序员可以在程序中加入多线程,每个线程完成程序的一部分功能,并可以和其他线程并发执行。 例如,我们在网上在线看电影,一般不需要等到电影下载完才观看,而是一边下载,一边看。这时就启动了两个线程,一个线程用来下载,另一个用来播放已经下载的数据。 程序—进程—线程 程序是为完成特定任务、用某种语言编写的一组指令的集合。是一段静态的代码。 进程是程序的一次执行过程,是系统进行调度和资源分配的一个独立单位。是动态的概念。 线程是比进程更小一级的执行单元。一个进程在其执行过程中,可以产生多个线程,形成多条执行线索。 每个线程也有它自身的产生、存在和消亡的过程,也是一个动态的概念。 程序—进程—线程 为什么要引入线程? 线程创建、销毁和切换的负荷远小于进程; 可以降低系统的负荷,主要是CPU的负担。 进程与多线程 进程是正在运行的一个程序。 程序:静态对象 进程:动态过程。 操作系统会为每个进程分配一段内存空间, 包括:代码、数据以及堆栈等资源。 多线程是指在进程内部同时存在几个执行体,按几条不同的执行线索共同工作。 线程不能独立存在,必须存在于进程内部,多线程之间共享该进程的内存。 进程之间并发执行,而多线程则实现了进程内部的并发。 传统进程的并发执行 多线程进程的并发执行 Java与多线程 Java语言的一个重要特点就是对多线程的支持,它使得编程人员可以很方便地开发出具有多线程功能、能同时处理多个任务的应用程序。 每个Java程序都有一个隐含的主线程。 Application: main 方法 Applet 小程序: 主线程指挥 IE 浏览器加载并执行 Java 小程序。 11.2 线程的状态 要想实现多线程,必须在主线程 (main方法) 中创建新的线程对象。 Java 使用 Thread 类及其子类的对象来表示线程。 线程从创建到执行完毕的整个过程叫做线程的生命周期。 11.2 线程的状态 一个线程在其生命周期内总是处于某种状态: 创建: 当一个线程对象被声明并创建后,它处于“创建”状态; 就绪:线程对象调用 start() 方法后,将进入“就绪”状态,处于“就绪”状态的线程不是立即执行,而是进入就绪队列,等待CPU; 运行:当就绪队列中具有最高优先级的就绪线程被调度并获得CPU时,便进入“运行”状态,执行 run() 方法,run 方法中定义了线程的操作和功能; 非运行:处于“运行”状态的线程可能因为某些原因 (例如人为挂起)进入“非运行”状态,让出CPU并临时中止自己的执行; 停止:线程完成了它的全部工作或调用 stop() 方法强制中止线程,线程就进入“停止”状态。 线程的生命周期 11.3 多线程编程 Java中有两种方法来创建一个新的线程: 继承 Thread 类 实现 Runnable 接口 无论采用哪种方法,都要使用到Thread类及其相关的方法。 Thread类的方法 start( ), run( ), stop( ) 创建线程和创建普通类的对象其实是一样的。 11.3.1 创建线程 1. 继承

文档评论(0)

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

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

1亿VIP精品文档

相关文档