1、Error与Exception的区别??
Error:表示有JVM进行处理的,是JVM出错。
Exception:是有程序进行处理的,使用try。。catch来处理。
2、谈谈final,finally,finallize的区别.
Final是定义常量、方法、和类的,声明的方法不能被覆写、声明的类不能被继承。
Finally是异常的统一出口。
Finallize是垃圾回收前的收尾工作。是Object对象定义的。
3、 什么情况下不会执行finally中的代码?
除非在try块或者catch块中调用了退出虚拟机的方法(即System.exit(1);),否则不管在try块、catch块中执行怎样的代码,出现怎样的情况,异常处理的finally块总是会被执行的。
不过,一般情况下,不要再finally块中使用return或throw等导致方法终止的语句,因为一旦使用,将会导致try块、catch块中的return、throw语句失效。
4、有t1 t2 t3三个线程,怎么让t3执行完t2执行,t2执行完t1执行?
这个线程问题通常会在面试阶段被问到,目的是检测你对”join( )”方法是否熟悉。这个多线程问题比较简单,可以用join方法实现。
thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程。比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B。
t.join(); //使调用线程 t 在此之前执行完毕。
t.join(1000); //等待 t 线程,等待时间是1000毫秒
Join方法实现是通过wait(小提示:Object 提供的方法)。
当main线程调用t.join时候,main线程会获得线程对象t的锁(wait 意味着拿到该对象的锁),调用该对象的wait(等待时间),直到该对象唤醒main线程 ,比如退出后。这就意味着main 线程调用t.join时,必须能够拿到线程t对象的锁。