SCJP Note 2

Chapter 8 异常


1、Error类由系统使用,用户不能使用,用于处理系统在运行环境方面产生的异常,如Java虚拟机错误,类状态错误等。
     Exception 类用于处理程序自身的错误,包括编译期错误和运行期错误。其中RuntimeException及其子类属于运行期异常,其余属于编译期异常
2、运行期异常:
     ArithmeticException、ArrayStoreException、NullPointerException
    注:浮点数除0不会产生ArithmeticException ;运行期异常都是隐式异常,可以不用捕捉
    编译期异常:
    InstantiationException、ClassNotFoundException、
3、throw子句写在方法体中或者构造体中,throw子句单独使用时只能抛出运行期异常,否则要与throws字句搭配使用;
    除了RuntimeException以及Error之外,其他需要抛出的异常都必须在throws字句中声明
4、override 重写方法抛出的异常可以少于父类,甚至不抛出异常

 

 

Chapter 13 线程


1、JVM允许多个线程同步执行,但是一般将线程控制在100个以内
2、单CPU情况下,执行多线程时,Java采用优先级调度的方式
3、yield方法强制当前运行的线程让出CPU使用权,使当前线程从运行状态过渡到就绪状态
     但以下两种情况例外

     (1) 当前就绪队列中没有等待运行的线程
     (2) 当前就绪队列中没有与调用yield线程的相同优先级的线程

4、suspend和resume方法破坏了面向对象的封装性,因为它们允许任意其他线程控制一个线程的挂起和恢复,使得线程运行不安全,另外suspend包含了对象锁,容易引起“死锁”现象。
5、join方法将当前运行的线程处于等待状态,直到调用join方法的线程执行完毕。
6、一旦将某个线程指定为一个线程组,就不能在转移到别的线程组中了;
    线程组中还可以包含其他线程组,但是线程只能访问自己线程组的信息,不能访问父线程组和其他线程组的信息。
7、当synchronized语句体结束时,无论是否抛出异常,解锁操作都会自动完成。
8、每个对象或者每个class都有一个“标志锁”
9、同步代码块中的数据必须只能在该块中才能访问,否则就失去了保护数据不被同时修改的意义。
10、wait和notify方法必须在synchronized里使用 ,否则会导致编译错误
11、yield方法用于当前正在执行的线程进行退让,因此只能使用yield()和this.yield()两种形式
12、线程进入block状态的几种情况:
      (1) 线程执行了suspend()方法
      (2) 线程执行了sleep()方法
      (3) 线程使用wait()方法来等待条件变量
      (4) 线程等待I/O资源的获取

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值