java多线程与进程调度.pdf

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java 多线程与异常处理 (2009-02-16 15:18:50) 转载 标签: 分类: Java it Java 有两个机制: 多线程 (Multithread) 和异常处理 (Exception) 。本章前半部分是关于 Thread 这一基本类以及一套先进的同步原语的介 绍,它们使得利用 Java 编写多线程大为方便。在本章的后半部分我们将介绍 Java 的异常处理机制 (Exception) ,异常处理机制提高了程 序的健壮性。另外,本章中间将介绍一个 Java 的 debugger 工具 Jdb 的使用, Jdb 工具对于调试多线程程序尤其有好处。 5.1 多线程 (Multithread) 5.1.1 线程的基本概念 在介绍多线程之前,我们先来了解一些相关的基本概念。一般来说,我们把程序的一次执行称为进程 (process) 。一个进程包括一个 程序模块和该模块一次执行时所处理的数据。每个进程与其它进程拥有不同的数据块,其内存地址是分开的。进程之间的通信要通过寻 址,一般需使用信号、管道等进行通信。线程 (thread) 是指进程内部一段可独立执行的有独立控制流的指令序列。子线程与其父线程共 享一个地址空间,同一个任务中的不同线程共享任务的各项资源。 多进程与多线程是多任务的两种类型。以前的操作系统,如 Win31 ,只运行多进程,而 Win95 及 WinNT则支持多线程与多进程。 Java 通过提供 Package 类 (Java.lang.package) 支持多进程,而提供 Thread 类来支持多线程。 多线程与多进程的主要区别在于,线程是一个进程中一段独立的控制流,一个进程可以拥有若干个线程。在多进程设计中各个进程 之间的数据块是相互独立的,一般彼此不影响,要通过信号、管道等进行交流。而在多线程设计中,各个线程不一定独立,同一任务中 的各个线程共享程序段、数据段等资源,如图 5.1 。 正如字面上所表述的那样,多线程就是同时有多个线程在执行。在多 CPU的计算机中,多线程的实现是真正的物理上的同时执行。 而对于单 CPU的计算机而言,实现的只是逻辑上的同时执行。在每个时刻,真正执行的只有一个线程,由操作系统进行线程管理调度, 但由于 CPU 的速度很快,让人感到像是多个线程在同时执行。 多线程比多进程更方便于共享资源, 而 Java 又提供了一套先进的同步原语解决线程之间的同步问题, 使得多线程设计更易发挥作用。 用 Java 设计动画以及设计多媒体应用实例时会广泛地使用到多线程,在后面几章你将看到多线程的巨大作用,当然,现在必须先学习一 些多线程的基本知识,慢慢地你就体会到它的优越性。 5.1.2 线程的状态 如同进程有等待、运行、就绪等状态一样,线程也有其状态。 当一个线程通过 new 被创建但还未运行时,称此线程处于准备状态 (new 状态 ) 。当线程调用了 start() 方法或执行 run() 方法后,则 线程处于可运行状态。若在等待与其它线程共享资源,则称线程处于等待状态。线程的另一个状态称为不可运行 (not runnable) 状态, 此时线程不仅等分享处理器资源, 而且在等待某个能使它返回可运行状态的事件, 例如被方法 suspend() 挂起的进程就要等待方法 resume() 方可被唤醒。当调用了 stop() 方法或线程执行完毕,则线程进入死亡 (dead) 状态。线程的各个状态之间的转换关系见图 5.2 。 5.1.3 创建线程 在了解基本概念后,下面学习如何在

文档评论(0)

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

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

1亿VIP精品文档

相关文档