java编程思想-java 异常使用指南】的更多相关文章

[读后感]<Java编程思想>~异常 终于拿出压箱底的那本<Java编程思想>.这本书我年轻的时候就买了,但是翻过几页后就放弃了.没想到这两天翻了一下,真的有收获. 看了一下第12章异常,有两个地方令我感悟很深. 使用嵌套的try子句 public static void main(String[] args) { try{ InputFile in = new InputFile("Test01.java"); try{ String s; int i = 1…
33.JAVA编程思想--JAVA IO File类 RandomAccessFile用于包括了已知长度记录的文件.以便我们能用 seek()从一条记录移至还有一条:然后读取或改动那些记录. 各记录的长度并不一定同样:仅仅要知道它们有多大以及置于文件何处就可以. 首先.我们有点难以相信RandomAccessFile 不属于InputStream 或者OutputStream 分层结构的一部分.除了恰巧实现了DataInput 以及DataOutput(这两者亦由 DataInputStream…
二.共享受限资源 有了并发就可以同时做多件事情了.但是,两个或多个线程彼此互相干涉的问题也就出现了.如果不防范这种冲突,就可能发生两个线程同时试图访问同一个银行账户,或向同一个打印机打印,改变同一个值等诸如此类的问题. 1. 不正确地访问资源 考虑下面的例子,其中一个任务产生偶数,而其他任务消费这些数字.这里,消费者任务的唯一工作就是检查偶数的有效性. 首先,我们定义EvenChecker,即消费者任务,因为他将在随后所有的示例中被复用.为了将EvenChecker与我们要试验的各种类型的生成器…
一.基本的线程机制 并发编程使我们可以将程序划分为多个分离的.独立运行的任务.通过使用多线程机制,这些独立任务中的每一个都将由执行线程来驱动. 线程模型为编程带来了便利,它简化了在单一程序中同时jiao'zhi'zai'yi'qi交织在一起的多个操作的处理.在使用线程时,CPU将轮流给每个任务分配其占用时间.每个人物都觉得自己在一直占用CPU,但事实上CPU时间是划分成片段分配给所有的任务.线程的一大好处就是可以使你从这个层次抽身出来,即代码不必知道他是运行在具有一个还是多个CPU的机器上.所以…
五. 新类库中的构件 Java SE5的java.util.concurrent引入了大量设计用来解决并发问题的新类.学习使用它们将有助于编写出更加简单而强壮的并发程序. 1. CountDownLatch 他被用来同步一个或多个任务,强制他们等待由其他任务执行的一组操作完成. 你可以向CountDownLatch对象设置一个初始计数值,任何在这个对象上调用wait()方法都将阻塞,直至这个计数值到达0.其他任务在结束其工作时,可以在该对象上盗用countDown()来减小这个计数值.Count…
应该在以下情况下使用异常: 在恰当的级别处理问题(在知道该如何处理的情况下才捕获异常). 解决问题并且重新调用产生异常的方法. 进行少许修补,然后绕过异常发生的地方继续执行. 用别的数据进行计算,以代替方法预计会返回的值. 把当前运行环境下能做的事情尽量做完,然后把相同的异常重抛到更高层. 把当前运行环境下能做的事情尽量做完,然后把不同的异常抛到更高层. 终止程序. 进行简化(如果你的异常模式使问题变得太复杂,那用起来会非常痛苦也很烦人). 让类库和程序更安全(这既是在为调试做短期投资,也是在为…
1.使用异常链,需要采用如下方式包装捕获到的异常: public void two() { System.out.println("two()"); try { one(); } catch (Throwable e) { // e = e.fillInStackTrace(); throw new RuntimeException(e); } } 调用two(),会产生如下异常栈帧信息,包含之前异常. 2.直接catch.抛出异常,不能产生异常链.不能获取之前的异常信息: 3.调用f…
1.java 容器类类库的用途是"保存对象",并将其划分为两个不同的概念: 1)Collection.一个独立元素的序列,这些元素都服从一条或多条规则.List 必须按照插入的顺序保存元素,而Set不能有重复元素.Queue 按照排队规则来确定对象产生的顺序(通常与他们被插入的顺序相同). 2)Map.一组成对的"键值对"对象,允许使用键来查找值.ArrayList允许使用数字来查找值.因此在某种意义上讲,他将数字和对象关联在了一起.映射表允许我们使用另一个对象来查…
三.终结任务 1. 在阻塞时终结 线程状态 一个线程可以处于以下四种状态之一: 1)新建(new):当线程被创建时,他只会短暂的处于这种状态.此时,他已经分配了必须的系统资源,并执行了初始化.此刻线程已经有资格获得CPU时间了,之后调度器将把这个线程转变为可运行zhuang't状态或阻塞状态. 2)就绪(Runnable):在这种状态下,只要调度器把时间片分配给线程,线程就可以运行.也就是说,在任意时刻,线程可以运行也可以不运行.只要调度器能分配时间片给线程,他就可以运行,这不同于死亡和阻塞状态…
注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便的使用这些数据. 一.定义注解 注解的定义看起来很像接口的定义.事实上,与其他任何Java接口一样,注解也将会编译成class文件. import java.lang.annotation.*; @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface Test() ///;~ 除了@符号外,…