Java教材课件第-章.ppt

  1. 1、本文档共323页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
9.1 多线程的概念 进程和线程 进程就是在计算机中正在执行的程序(即处于活动状态的程序),每一个进程都有自己独立的一块内存空间和一组系统资源,比如在Windows、Linux等操作系统中可以同时执行多个程序,这里的每一个运行的程序都是一个进程,这些程序使用的内存空间和系统资源都是独立的,并且每个程序也是为了各自的任务而运行,互不干扰。进程概念的引入是操作系统发展史上的一个里程碑,正是进程技术的引入才使得计算机操作系统同时处理多个任务成为可能,这也促使了像Windows一样的多任务操作系统的出现,使计算机的运行效率在很大程度上得到了提升。在进程的基础上,线程概念后来又被提出,它使得在一个进程中同时处理多个任务成为可能。 线程和进程有很多相似的特征,线程可以被看作是进程的进一步细分,也就是把进程完成的任务划分成一个个更小的子任务,每一个子任务就是一个线程,然后用细分的这些线程分别去执行。线程是基于进程的一个基本运行单位,线程同样包括一个内存入口点地址、一个出口点地址以及能够顺序执行的代码序列。但是线程与进程的重要区别在于线程不能够单独执行,它必须运行在处于活动状态的进程中,线程本身的数据通常只有微处理器的寄存器数据以及一个供程序执行时使用的堆栈,因此可以定义线程是程序内部的顺序代码流,也就是说线程是在进程作用域内活动的一系列指令流,所以线程也被称为轻型进程(Light Weight Process,LWP)。 多线程 多线程允许在程序中“并行”执行多个指令流,每个指令流被称作一个线程,彼此间的执行互相独立。多线程需要操作系统的支持,WIN32平台支持多线程程序,允许程序中存在多个线程。在单CPU计算机系统中,系统把CPU的时间片按照调度算法分配给各个线程,因此各线程实际上是分时执行的,而在多CPU的计算机系统中,同一个程序的不同线程可以分配到不同的CPU上去执行。多个线程的执行是并发的,也就是在逻辑上“同时”,而不是物理上的“同时”。如果系统只有一个CPU,那么真正的“同时”是不可能的,但是由于CPU的速度非常快,用户感觉不到其中的区别。 Java中的多线程机制 线程需要计算机系统的支持,并不是所有类型的计算机都支持多线程应用程序。但是由于Java引入了虚拟处理器技术,所以Java语言将线程支持与语言运行环境结合在一起,不管在任何系统下,Java语言都提供了多任务并发执行的能力,如图9.2所示。这就好比一个人在处理家务的过程中,将米放在电饭锅里后再把衣服放到洗衣机中自动洗涤,然后开始做菜,等菜做好了,饭也熟了,同时衣服也洗好了。只要合理安排各个线程的运行,就可以极大地提高程序的运行效率。 对多线程的综合支持是Java语言的一个重要特色,在Java中,内置了Thread类来实现多线程,当程序引用了java.lang.Thread类,也就引入了一个Java执行环境。由图9.2可知,一个线程是由三部分组成的: 虚拟处理机(CPU),封装在java.lang.Thread类中,它控制着整个线程的运行,提供对多线程的支持; 执行的程序代码,传递给Thread类,由Thread类控制顺序执行; 程序所处理的数据,传递 给Thread类,是在代码执 行过程中所要处理的数据。 在Java编程中,虚拟处理机(CPU)被封装在Thread线程类的实例之中。这样一来,有多少个需要完成的子任务(线程)就有多少个虚拟CPU这样的“虚拟计算机”在同时运行,把一个较大的任务分割成许多较小的子任务分别地、“同时”地去完成,这就是Java多线程机制。 Java的线程是通过java.lang包中定义的类Thread来实现的。当生成一个Thread类的对象之后,就产生了一个线程,通过该对象实例,可以启动线程、终止线程、或者暂时挂起线程等。由于Java在语言级提供了对线程的支持,所以在Java语言中使用多线程要远比在其它语言中使用线程简单得多。 9.2 线程类及其线程创建 线程类 通常在Java程序设计中,任何机制都是基于类的,当然线程也不例外,所以要学会Java中的多线程编程,就必需了解实现线程的Thread类。 线程对象实例表示Java程序中的真正的线程,通过它可以启动线程、终止线程、挂起线程等操作,Thread类是负责向其它类提供线程支持的最主要的类,Thread类在包java.lang中定义,它的构造方法为: public Thread(ThreadGroup group,Runnable target,String name); 其中,group指明该线程所属的线程组(关于线程组将在后面详细讲解);target是指实际执行线程体的目标对象,它必须实现接口Runnable;name为线程名,Java中的每个线程都有自己的

文档评论(0)

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

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

1亿VIP精品文档

相关文档