A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 王艳静 于 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可能产生于运行时的一些不可预知的时刻,而且往往产生后没有有效的手段处理,因此不需要强制对其进行声明和捕获。

  1. class Tickett implements Runnable/*extends Thread*/{
  2.         private int num = 400;//重点:静态
  3.         Object o = new Object();
  4.         
  5.         public void run(){
  6.                 while(true){
  7.                         synchronized (o) {
  8.                                 if(num>0){
  9.                                         try {
  10.                                                 Thread.sleep(10);//只能try不能throws
  11.                                         } catch (InterruptedException e) {
  12.                                                 e.printStackTrace();
  13.                                         }
  14.                                         System.out.println(Thread.currentThread().getName()+"卖出一张票。现阶段还剩余"+(num--)+"张票");
  15.                                 }        
  16.                                 
  17.                         }
  18.                 }        
  19.         }        
  20. }
复制代码



8 个回复

倒序浏览
需要程序停顿的时候吧
回复 使用道具 举报
遇到难题时可以放松放松大脑,也许休息一会灵感就来了!
回复 使用道具 举报
     求沟通,        
回复 使用道具 举报
kingxiao 发表于 2015-8-16 23:04
需要程序停顿的时候吧

我是说异常的问题
回复 使用道具 举报

为什么给你回复不了 已更新问题答案 欢迎指教
回复 使用道具 举报
backin 中级黑马 2015-8-17 09:15:02
7#
这个例子其实不能很好的解释为什么异常必须抛的,因为这个是线程的执行体,一旦多线程进入,抛出去谁接手不清楚的。。异常什么时候抛要看你想告诉什么人这里有异常,抛出的异常就在哪里try就搞定了撒
回复 使用道具 举报
王艳静 发表于 2015-8-17 09:04
为什么给你回复不了 已更新问题答案 欢迎指教

          我都马上失去信心了
回复 使用道具 举报
父类没有异常的话,子类不能往上抛出
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马