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

Java程序设计教程 第9章 多线程与Applet 9.1 线程 9.2 HTML基础 9.3 Applet 9.1 线程 9.1.1 线程的概念 9.1.2 线程的控制 9.1.3 线程的创建 9.1.4 线程间通信 9.1.1 线程的概念 1. 程序的顺序执行与并发执行 程序的顺序执行是指一个具有独立功能的程序独占处理机直至最终结束的过程。当程序顺序执行时,在任意时刻程序中只有一个执行点,它具有如下的特点: 顺序性:即程序执行过程可以看成是一系列严格按程序规定的状态转移的过程; 封闭性:也就是说程序执行的最终结果由给定的初始条件决定,不受外界因素的影响;可再现性:只要输入的初始条件相同,则无论何时重复执行该程序都会得到相同结果。 9.1.1 线程的概念 与程序的顺序执行相对的是程序的并发执行,即一组逻辑上互相独立的程序或程序段在执行过程中,其执行时间在客观上互相重叠。程序的并发执行可以分成两种情况:一种是多道程序系统中多道程序的并发执行,此种情况下实际上是宏观上(程序级)同时进行,微观上(指令级)顺序执行的;另一种是在某道程序段的几个程序片段中,包含着一部分可以同时执行或顺序颠倒执行的代码。程序的并发执行是实现多线程技术的基础。 9.1.1 线程的概念 2. 进程与线程的概念及其区别 进程是指一个具有独立功能的程序针对某个数据集的执行过程。进程也是系统中分配资源的基本单位。在大多数操作系统中可以创建多个进程,当一个程序启动时,它将为即将开始的每项任务创建一个进程,并允许它们同时运行,这样就提高了资源利用率。例如,当一个程序因等待网络访问或用户输入而被阻塞时,另一个程序还可以继续运行。创建一个进程要占用相当一部分处理器时间和内存资源,并且在大多数操作系统中,每个进程都不能访问其他进程的内存空间。正因为如此,进程间的通信很不方便,进程间切换的负担也较重,并且不容易提出较好的编程模型。 9.1.1 线程的概念 线程与进程类似,是一段完成特定功能的代码。它是程序中单个顺序的控制流,也是一个进程内的基本调度单位。线程和进程一样拥有独立的执行控制,并由操作系统负责调度。同一进程可以包含多个线程,这些线程共享属于该进程的一块内存空间和一组系统资源;而线程自身的数据通常只有微处理器的寄存器数据,以及一个供程序执行时使用的堆栈。系统在产生一个线程,或者在各个线程之间切换时,负担要比进程小得多。此外,由于线程只是在单个进程的作用域内活动,所以线程间的通信也比进程简单。线程的实现要依靠操作系统,现代操作系统一般都支持线程技术。 9.1.1 线程的概念 3. 多线程编程 多线程编程是指将程序任务分成几个并行的子任务,由这些子任务并发执行,一起协作完成程序的功能。多线程的执行是并发的,即在逻辑上是“同时”的,而不管是否是物理上的“同时”。如果系统只有一个CPU,那么真正的“同时”是不可能的,而只能采用各线程轮流使用CPU的方法来模拟“同时执行”(只是由于CPU的速度非常快,用户感觉不到其中的区别);但是如果是在多CPU系统中,则多线程的并行执行是可能的,可以把不同的线程分配到不同CPU上同时执行。 9.1.1 线程的概念 4. Java中线程的概念模型 Java内在支持多线程,它的大部分类型都是在多线程下定义的,从而使整个系统成为异步系统。Java通过java.lang.Thread类封装了线程及其上的操作,每个线程由三部分组成: (1)虚拟的CPU,封装在java.lang.Thread 类中。 (2)CPU所执行的代码。 (3)CPU所处理的数据。 9.1.2 线程的控制 1. 线程的生存周期 在Java中,每个线程从创建到消亡为一个生存周期,它将经历四个状态: (1)新建状态(New Thread Status (2)可执行状态(Runnable) (3)阻塞状态(Blocked) (4)消亡状态(Dead thread) 9.1.2 线程的控制 线程的状态及其切换的示意图如图9-2所示。 9.1.2 线程的控制 2. start()方法 start()方法的作用是启动线程,使线程由新建状态进入可运行状态,准备被CPU调度执行。对于start()的调用是立即返回的,并不影响调用了start()方法的其他线程的执行。如果一个线程的start()方法没有被调用,则该线程是不可能运行的,而只能等待,因为此时该线程没有分配到系统资源。 9.1.2 线程的控制 3. 可运行状态与阻塞状态的相互转化 一旦线程进入可运行状态,则线程将可以被CPU调度执行。在系统中有一个负责线程调度与切换的调度器,它会在适当的时候选择处于可运行状态线程到CPU上运行,至于怎样

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档