Java语言基础教程 教学课件 ppt 作者 沈昕 07

上传人:w****i 文档编号:94456441 上传时间:2019-08-07 格式:PPT 页数:49 大小:157.50KB
返回 下载 相关 举报
Java语言基础教程 教学课件 ppt 作者 沈昕 07_第1页
第1页 / 共49页
Java语言基础教程 教学课件 ppt 作者 沈昕 07_第2页
第2页 / 共49页
Java语言基础教程 教学课件 ppt 作者 沈昕 07_第3页
第3页 / 共49页
Java语言基础教程 教学课件 ppt 作者 沈昕 07_第4页
第4页 / 共49页
Java语言基础教程 教学课件 ppt 作者 沈昕 07_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《Java语言基础教程 教学课件 ppt 作者 沈昕 07》由会员分享,可在线阅读,更多相关《Java语言基础教程 教学课件 ppt 作者 沈昕 07(49页珍藏版)》请在金锄头文库上搜索。

1、第7章 异常和线程,7.1,异常,7.2,线程,7.1 异 常,7.1.1 常见错误,(1)大小写形式混淆 (2)使用未声明的变量 (3)使用未初始化的变量,1编译错误,(4)语句后面遗漏分号 (5)数据类型与变量类型不符 (6)小括号不配对,(1)数组下标越界 (2)除数为零,2运行错误,(1)超出数据类型的数值范围 (2)将等于关系符号写成“=” (3)语句体忘记加大括号,3逻辑错误,7.1.2 异常处理,Java语言提供一个异常处理类Exception类,专门处理程序执行期间的错误。每当Java程序运行过程中发生一个可识别的运行错误时,即该错误有一个异常类与之相对应时,系统都会产生一个相

2、应的该异常类的对象,即产生一个异常。,1异常处理,一旦一个异常对象产生了,系统中就一定有相应的机制来处理它,确保不会产生死机、死循环或其他对操作系统的损害,从而保证了整个程序运行的安全性。,Java语言异常处理机制有以下一些优点。 (1)Java语言通过面向对象的方法进行异常处理,把各种不同的异常事件进行分类,体现了良好的层次性,提供了良好的接口,这种机制为具有动态运行特性的复杂程序提供了强有力的控制方式。,(2)Java语言的异常处理机制使得处理异常的内容和程序本身内容分开,降低了程序的复杂性,增强了程序的可读性。 (3)由于把异常事件当成对象来处理,利用类的层次性,可以把多个具有相同父类的

3、异常统一处理,也可以区分不同的异常分别处理,使用非常灵活。,Java语言的异常类是处理运行时的错误的特殊类,每一种异常类对应一种特定的运行错误。所有的Java异常类都是系统类库中的Exception类的子类。,2异常类,Exception类有若干子类,每一个子类代表了一种特定的运行时的错误。这些子类有些是系统事先定义好并包含在Java类库中的,称为系统定义的运行异常。,系统定义的运行异常通常对应着系统运行错误。由于这种错误可能导致操作系统错误甚至是整个系统的瘫痪,所以需要定义异常类来特别处理。,下面是常见的系统定义的运行异常。 (1)ArithmeticException:数学错误。 (2)A

4、rrayIndexOutOfBoundsException:数组下标越界使用。,(3)ClassNotFoundException:未找到要使用的类。 (4)FileNotFoundException:未找到指定的文件或者目录。,(5)InterruptedException:线程在睡眠、等待或者其他原因暂停时被其他线程打断。 (6)IOException:输入、输出错误。 (7)MalformedURLException:URL格式错误。,(8)NullPointerException:引用空的尚无内存空间的对象。 (9)SecurityException:安全性错误,如Applet欲读写文

5、件。 (10)UnknownHostException:无法确定主机的IP地址。,系统定义的异常主要用来处理系统可以预见的较常见的运行错误,对于某个应用程序所特有的运行错误,则需要编程者根据程序的特殊逻辑在应用程序中创建自定义的异常类和异常对象。这种用户自定义异常主要用来处理用户程序中特定的逻辑运行错误,我们将在后面具体介绍。,3处理过程,(1)trycatchfinally语句 (2)关键字throws和throw,Java类库中定义的异常主要用来处理系统可以预见的比较常见的运行错误。如果某个应用程序有特殊的要求,则可能出现系统不能识别的运行错误,这时就需要用户自己创建异常和异常类,使系统能

6、够识别这种错误并进行处理,增强用户程序的健壮性和容错性,从而使系统更加稳定。,4自定义异常处理,用户自定义的异常类一般都是Exception类的直接或者间接子类。 创建自定义异常的基本步骤如下。 (1)声明一个新的异常类,其必须继承Exception类、Exception类的子类或者用户 自定义的其他异常类,其格式为:,class 自定义异常类名 extends 父异常类名 语句体 ,(2)为新的异常类声明属性和方法,或者重载父类的属性和方法,使之能够体现出程序中出现这种异常的信息。,(3)抛出用户自定义的异常。用户自定义异常不可能依靠系统自动抛出,而必须通过关键字throw完成,通常是通过条

7、件判断确定是否抛出这个异常类的新对象。抛出用户自定义异常的格式如下:,返回类型 方法名( 参数1, 参数2, ) throws 自定义异常类 if( 条件判断 ) throw ( new 自定义异常类名( this ) ); ,程序是一段静态的代码,它是应用软件执行的蓝本。,7.2 线 程,7.2.1 线程,1程序、进程与线程,进程是程序的一次动态执行过程,它对应了从代码加载、执行至执行完毕的一个完整过程,这个过程也是进程本身从产生、发展至消亡的过程。,线程是比进程更小的执行单位,一个进程在其执行的过程中,可以产生多个线程,形成多条执行线索。每个线程也有它自身的产生、存在和消亡的过程。,每个进

8、程都有一段专用的内存区域,并以进程控制块作为它存在的标志。不同的是,线程自身不能自动运行,而必须栖身于某一进程之中,由进程触发执行。在系统资源的使用上,属于同一进程的所有线程共享该进程的系统资源,并利用共享单元来实现数据交换、实时通信与必要的同步操作,所以线程之间切换的速度比进程要快得多。,线程与进程相似,是一段完成某个特定功能的语句体,是程序中单个顺序的流控制。但与进程不同的是,同类的多个线程共享一块内存空间和一组系统资源,而线程本身的数据通常只有微处理器的寄存器数据,以及一个供程序执行时使用的堆栈。所以,系统在产生一个线程,或者在各个线程之间切换时,负担要比进程小的多。一个进程中可以包含多

9、个线程。,2多线程,一个线程是一个程序内部的顺序控制流。多进程是指在操作系统中,能同时运行多个任务程序。多线程是指在同一应用程序中,有多个顺序流同时执行。,多任务与多线程是两个不同的概念。前者是针对操作系统而言的,表示操作系统可以同时运行多个应用程序;后者是针对一个程序而言的,表示一个程序内部可以同时执行多个线程。,多线程的程序能更好地表述和解决现实世界的具体问题,是计算机应用开发和程序设计的一个必然发展趋势。,Java语言最大的优势就是它对线程内置和本地的支持。其他许多支持多线程的编程语言都需要利用外部的软件包才能够实现多线程,而Java语言本身就提供了支持多线程的包(java.lang.T

10、hread)。Java语言将一个虚拟的CPU封装在Thread类中,每个线程的代码通过Thread类与虚拟的CPU建立联系。,3Java语言如何实现多线程,Java虚拟的CPU本身只占用计算机CPU的一个进程,同时运行多个虚拟的CPU,也就是多个Thread类的对象。而多个虚拟CPU之间的协调不需要编程者编写程序来控制,这使得编写多线程的应用程序容易了很多。,每个Java程序都有一个默认的主线程,对于Java Application来说,主线程是main( )方法执行的线索;对于Java Applet来说,主线程是指浏览器加载并执行Java Applet程序。要实现多线程,必须在主线程中创建新

11、的线程对象。Java语言中使用Thread类及其子类的对象来表示线程。,(1)新建状态 (2)就绪状态 (3)运行状态 (4)阻塞状态 (5)死亡状态,7.2.2 线程的状态和优先级,1线程的状态,当一个在就绪队列中排队的线程被分配给CPU资源而进入运行状态后,这个线程就称为被“调度”或者被线程管理器选中了。 Java提供一个线程调度器来监控程序中启动后进入就绪状态的所有线程。线程调度器按照线程的优先级决定应该调度哪个线程来执行。线程调度器是抢先式调度,也就是说,,2线程的优先级,如果在当前线程执行过程中,一个更高优先级的线程进入可运行状态,则这个线程立即被调度执行。 Java语言中线程的优先

12、级从低到高共分为10级,以整数110表示。设置优先级是通过调用线程对象的setPriority( )方法实现的。,(1)Thread类构造方法 Thread类构造方法有6种,其格式为: public Thread( ) public Thread( Runnable target ) public Thread( String s),7.2.3 多线程的控制和调度,1Thread类,public Thread( Runnable target, String s ) public Thread( ThreadGroup group, Runnable target ) public Threa

13、d( ThreadGroup group, String s ),其中,参数group代表该线程所属的线程组,target代表执行线程体的目标对象(该对象必须实现Runnable接口),s代表线程名。利用构造方法创建新线程对象之后,这个对象中的有关数据被初始化,从而进入线程的生命周期的第一个状态。,(2)Thread类中的主要方法 run( )方法:用来运行线程中的代码。 start( )方法:用来启动线程对象,使之从新建状态转入就绪状态。 sleep(long milis)方法:用来让线程睡眠一段时间,此期间线程不消耗CPU资源,以毫秒为时间单位。,interrupt( )方法:用来中断线程

14、。 isAlive( )方法:用来判断线程是否处于活动状态(即已调用start,但run还未返回)。如果处于活动状态则返回true,否则返回false。 setName(String threadName)方法:用来改变线程的名字。,getName( )方法:用来获取由setName( )方法设置的线程名字的字符串。 yield( )方法:用来将CPU控制权主动移交到 下一个可运行线程。 setPriority(int p)方法:用来设置线程优先级。 getPriority( )方法:用来获取线程优先级。,用Java提供的线程类Thread来创建线程与创建普通类的对象操作是一样的,而线程就是T

15、hread类或者其子类的实例对象。下面是一个创建启动一个线程的语句: Thread mythread = new Thread( ); mythread.start( );,事实上,启动线程也就是启动线程的run( )方法,而Thread类中的run( )方法没有任何操作语句,所以这个线程没有任何操作。要使线程实现预定功能,必须重写run( )方法。,Runnable接口只有一个抽象方法run( ),所有实现Runnable接口的类都必须重写这个run( )方法,编写具体操作语句。使用实现Runnable接口的方法创建线程的过程可以分为3个步骤。,2Runnable接口,(1)声明一个实现Runnable接口的类并生成对象。 (2)生成一个Thread类对象。 (3)将生成的Runnable对象作为参数传递给Thread构造方法。,(1)使用关键字synchronized同步共享数据 (2)wait( )、notify( )和notifyAll( )方法,3线程的同步,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号