本帖最后由 王艳静 于 2015-8-17 08:39 编辑
今天在复习多线程的时候注意到。现在脑子很混沌。记录下问题,明天总结。
----------------------------------------------------------------------------------------
2015-08-17 08:40更
原问题解答:在run()方法中,Thread.sleep(10);只能try不能throws的原因:
答:因为我们在复写父类方法或实现接口方法时,本源的方法没有做抛出说明,复写此方法时,就无法抛出异常
复写run方法时,本源run方法没有做出抛出声明。
异常的小总结,不完整,欢迎指教。
问:关于异常哪些该try,哪些该throws,哪些既不用try也不用throws?
答:
哪些该try?——能处理就早处理,抛不出去还不能处理的就想法消化掉或者转换为RuntimeException处理。eg:IOException,当你打开、读取、写入文件时可能抛出这个错。你可以捕获并提示最终用户『文件操作失败,请重试』等信息,而不是任由它抛到JVM中导致当前线程挂掉。
哪些该throws——
哪些既不用try也不用throws?——RuntimeException可能产生于运行时的一些不可预知的时刻,而且往往产生后没有有效的手段处理,因此不需要强制对其进行声明和捕获。
- class Tickett implements Runnable/*extends Thread*/{
- private int num = 400;//重点:静态
- Object o = new Object();
-
- public void run(){
- while(true){
- synchronized (o) {
- if(num>0){
- try {
- Thread.sleep(10);//只能try不能throws
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- System.out.println(Thread.currentThread().getName()+"卖出一张票。现阶段还剩余"+(num--)+"张票");
- }
-
- }
- }
- }
- }
复制代码
|
|