收藏 分享(赏)

实验5 异常处理和多线程.doc

上传人:tkhy51908 文档编号:4572990 上传时间:2019-01-02 格式:DOC 页数:5 大小:77KB
下载 相关 举报
实验5 异常处理和多线程.doc_第1页
第1页 / 共5页
实验5 异常处理和多线程.doc_第2页
第2页 / 共5页
实验5 异常处理和多线程.doc_第3页
第3页 / 共5页
实验5 异常处理和多线程.doc_第4页
第4页 / 共5页
实验5 异常处理和多线程.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、1实验 5 异常处理和多线程一、实验目的1. 了解异常处理(exception)的作用,掌握异常处理的设计方法。2. 理解 Java 的多线程处理机制,掌握线程的使用方法。二、实验要求1. 会使用 trycatchfinally 语句捕获异常;2. 会使用 throw 语句抛出异常;3. 会使用 throws 子句在方法声明中抛出异常;4. 会自定义异常类。5. 会使用 Thread 类和 Runnable 接口创建线程;6. 会使用 Thread 类及相关的方法控制线程;7. 会使用关键字 synchronized 定义临界区,解决线程互斥访问;8. 会使用信号量和 PV 操作解决线程同步的

2、方法。三、实验内容1. 异常处理1. 1 使用 trycatch.finally 语句处理异常知识点解析:异常处理语句语法 try 语句序列 1 /存在潜在异常的代码块 catch (异常类 异常对象名) / 用于捕获并处理指定类型的异常对象,参数是一个异常对象 e, 其类型必须是 Exception 类及其子类。语句序列 2 /对某种异常类对象进行处理的代码块 finally /子句可以省略语句序列 3 /无论是否捕获到异常,最后必须执行的代码块2示例: 课本例 7.1 补充: ch7- ArrayAverage.java1.2 使用 throw 语句抛出异常知识点解析:在上面的实验中,异常

3、对象是 Java 运行时由系统抛出的。抛出异常也可以通过使用 throw 语句实现。throw 是 Java 语言的关键字,用来告知编译器此处要发生一个异常。throw 后面要跟一个新创建的异常类对象,用于指出异常的名称和类型。throw 语句格式为:;程序会在 throw 语句处立即终止,转向 trycatch 寻找异常处理方法,不再执行 throw 后面的语句。示例: 1.3 使用 throws 子句知识点解析:throws 子句一般用来表明在使用该方法时可能抛出异常但不捕获的异常。异常由系统来处理。throws 子句也可以指出抛出异常是 RuntimeException 或自定义异常类,

4、即异常的类型,以便准备调用其它方法捕获它,这种情况一般需要两个方法来分别处理抛出异常和处理异常。一种是只在方法中抛出异常的程序, 另一种是带有捕获处理的 throws 子句.示例:课本例 7.2注意:对于程序中需要处理的异常,一般要编写 try-catch-finally 语句捕获并处理。1.4 创建自定义异常类知识点解析:当 Java 提供的异常类不能满足需要时,程序可以自定义异常类,由 catch 子句捕获并处理。自定义的异常类必须是 Exception 的子类。示例:课本例 7.3 补充: ch7-DateException.java ChineseDate.javapublic voi

5、d set(int age) if (age0 else throw new Exception(“IllegalAgeData”); /抛出异常32. 多线程程序(program)是对数据描述与操作的代码的集合,是应用程序执行的脚本。进程(process ) 是程序的一次执行过程,是操作系统运行程序的基本单位。程序是静态的,进程是动态的。系统运行一个程序就是一个进程从创建、运行到消亡的过程。线程是比进程更小的运行单位,是程序中单个顺序的流控制。一个进程中可以包含多个线程。线程是一种特殊的多任务方式。当一个程序执行多线程时,可以运行两个或更多的由同一个程序启动的任务。这样,一个程序可以使得多个

6、活动任务同时发生。 2.1 继承 Thread 类创建线程知识点解析:采用直接继承 Thread 类的方法来创建线程,分为两步:1) 自定义一个类,让其继承 Thread 类;2) 覆盖 Thread 类的 run()方法。示例:课本例 8.12.2 实现 Runnable 接口创建线程知识点解析:采用实现 Runnabke 接口的方法来创建线程,分为两步:1) 自定义一个类,声明其实现 Runnable 接口并实现 run()方法;2) 将实现了 Runnable 接口的类作为 Thread 类的目标对象。示例:课本例 8.22.3 控制线程知识点解析:一个线程的生命周期可分为新建、就绪、运

7、行、阻塞、死亡这 5 个阶段。每个阶段都处于新建、可运行、阻塞、等待、定时等待和终止 6 种状态的一种。通过Thread 中改变线程状态的方法 start()、sleep()、join()、yield()等,测试线程状态的方法isInterrupted()、isAlive()等,以及 java.lang.Object 中协调线程对象的方法 wait()、notify()、notifyAll()可以对线程进行控制。示例:课本例 8.3 补充: ch8- WelcomeJFrame.java42.4 使用 synchronized 实现线程互斥知识点解析:为了实现多个线程能够互斥地访问共享变量,J

8、ava 语言采用 synchronized 关键字声明一段程序为临界区,实现线程对临界资源的互斥访问。示例:课本例 8.5 注意: 对比例 8.4补充:ch8- TicketSystem.java2.5 使用信号量和 PV 操作实现线程通信知识点解析:为了实现多个线程能够按照先后顺序的串联关系执行,即多个线程之间的通信问题, Java 语言采用信号量和 PV 操作,实现多个线程之间的同步问题。示例:课本例 8.7 注意: 对比例 8.6补充:ch8- CardBuffer.java四、思考题1. 程序中的错误有哪几种?分别能够在什么时刻被发现?2. Java 为什么要采用异常处理机制?Java

9、 的异常处理是怎样实现的?异常处理机制能够解决程序中遇到的所有错误吗?哪些错误不是异常处理能够解决的?3. 请问运行没有 main()方法的类会怎样?4. 在什么情况下需要采用线程同步机制?5. 数字时钟. 制作一个数字时钟标签组件 , 显示当前时间; 将该标签添加到框架窗口中, 如图所示.6. (选作) 设计一个数字秒表,实现计时启动、暂停、继续、停止等功能,要求多个按钮之间的状态是相互关联的,窗口如图所示。按钮之间关联关系如下:1)初始时 Start 按钮可用(亮) ,Continue 按钮和 Stop 按钮都为不可用(灰) 。2)当按下 Start 按钮时,秒表开始计时,同时 Stop 按钮可用,Start 按钮和 Continue 按钮 不可用;3)当按下 Stop 按钮时,秒表计时停止,同时 Start 按钮和 Continue 按钮可用,Stop 按钮 不可用;54)当按下 Continue 按钮时,秒表计时继续,同时 Stop 按钮可用,Continue 按钮和Start按钮不可用。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 中等教育 > 中学实验

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报