第7章多线程与异常处理研究.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
7.4 线程同步 由于多线程要共享内存资源,因此有可能一个线程正在使用某个资源,而另一个线程却在更新它,这样,会造成数据的不正确。因此对于多个线程共享的资源,必须采取措施,使得每次只有一个线程能使用它,这就是多线程中的同步(synchronization)问题。 7.4.1使用多线程造成的数据混乱 【例7-10】 设计一个模拟用户从银行取款的应用程序。设某银行帐户存款额的初值是2000元,用线程模拟两个用户从银行取款的情况。  通过对该程序的分析,发现出现错误结果的根本原因是两个并发线程共享同一内存变量所引起的。后一线程对变量的更改结果覆盖了前一线程对变量的更改结果,造成数据混乱。 7.4.2 同步线程 1、Synchronized方法 声明Synchronized方法的一般格式为: public synchronized 返回类型 方法名() {       …  /* 方法体 */ } 【例7-11】 改写例7-10,用线程同步的方法设计用户从银行取款的应用程序。 2、管程及wait()、notify()方法 【例7-12】设计一个模拟车辆通过交通路口的程序。 本示例创建了三个类,一个是车辆类ICar,由线程绘制2辆不同方向行驶的小车。 另一个是交通警察类TrafficCop,控制二辆车的线程同步,(根据车辆的位置)。 还有一个是车辆在道路上行驶的窗体类Car,该类绘制了2条相互垂直的道路,调用车辆线程(车辆行驶)。 人有了知识,就会具备各种分析能力, 明辨是非的能力。 所以我们要勤恳读书,广泛阅读, 古人说“书中自有黄金屋。 ”通过阅读科技书籍,我们能丰富知识, 培养逻辑思维能力; 通过阅读文学作品,我们能提高文学鉴赏水平, 培养文学情趣; 通过阅读报刊,我们能增长见识,扩大自己的知识面。 有许多书籍还能培养我们的道德情操, 给我们巨大的精神力量, 鼓舞我们前进。 * * Java语言程序设计(第3版) 第7章 多线程与异常处理 本章主要内容: 7.1 异常处理 7.1.1 Java的异常处理机制 7.1.2 异常的抛出 7.1.3 异常处理 7.2 多线程的基本概念 7.2.1 线程与多线程 7.2.2 线程的生命周期 7.2.3 线程的优先级 7.3 线程的使用方法 7.3.1创建Thread子类构造线程 7.3.2 实现Runnable接口构造线程 7.4 线程同步 7.4.1使用多线程造成的数据混乱 7.4.2 同步线程 7.1 异常处理 异常(Exception)指程序运行过程中出现的非正常现象,例如用户输入错误、需要处理的文件不存在、在网络上传输数据但网络没有连接等。 7.1.1 Java的异常处理机制 在Java中,把异常分为错误(Error)与异常(Exception)两大类。 Exception类有自己的方法和属性。它的构造方法有两个: public Exception ( ); public Exception (String s); 7.1.1 Java的异常处理机制 系统定义的运行异常 系统定义的运行异常 说明 ClassNotFoundException 找不到要装载的类,由Class.forName抛出 ArrayIndexOutOfBoundsException 数组下标出界 FileNotFoundException 找不到指定的文件或目录 IOException 输入输出错误 NullPointerException 非法使用空引用 ArithmeticException 算术错误,如除数为0 InterruptedException 一个线程被另一个线程中断 UnknownHostException 无法确定主机的IP地址 SecurityException 安全性错误 MalfomedURLException URL格式错误 7.1.2 异常的抛出 1、系统自动抛出的异常 【例7-1】创建一个有错误的程序,测试异常抛出的情况。 1.  /* 测试除数为0时抛出的异常 */ 2. class Example7_1 3.  { 4.    public static void main(String[] args) 5.   { 6.    int a=5,d=0; 7.  System.out.println(a/d); 8.   } 9.  } 7.1.2 异常的抛出 2、声明抛出异常 用throw语句抛出异常对象的语法格式为:  修饰符 返回类型 方法名() throws 异常类名 {    …. Throw 异常类名; …. } 7.

文档评论(0)

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

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

1亿VIP精品文档

相关文档