java多线程与进程调度.docx

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java?多线程与异常处理 ?(2009-02-16 15:18:50) HYPERLINK javascript:; 转载 标签:? HYPERLINK /c.php?t=blogk=itts=bpoststype=tag \t _blank it 分类:? HYPERLINK /s/articlelist_1367015307_4_1.html \t _blank Java 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 创建线程   在了解基本概念后,下面学习如何在Java中创建多线程。   Java通过java.lang.Thread类来支持多线程。在Thread类中封装了独立的有关线程执行的数据和方法,并将多线程与面向对象的结构合为一体。   Java提供了两种方法创建线程,一种是继承Thread类,另一种则是实现接口Runnable。   1.继承Thread类   通过继承Thread类创建线程十分简单,只需要重载run()方法提供执行入口就可以,下面我们通过例5.1来解释说明。   例5.1 ThreadTest1.java。 import java.lang.Thread; import java.lang.System; import java.lang.Math; import java.lang.InterruptedException;   class ThreadTest1{ public static void main(String args[])   throws java.io.IOException

文档评论(0)

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

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

1亿VIP精品文档

相关文档