黑马程序员技术交流社区

标题: 关于多线程和异常问题 [打印本页]

作者: 李涛兴    时间: 2012-11-16 22:16
标题: 关于多线程和异常问题
本帖最后由 李涛兴 于 2012-11-16 23:01 编辑
  1. class Ticket implements Runnable
  2. {
  3.         private int tick=100;
  4.         Object obj=new Object();
  5.         public  void run()
  6.         {
  7.                 while(true)
  8.                 {
  9.                         synchronized(obj)
  10.                         {
  11.                                 if(tick>0)
  12.                                 {
  13.                                         try        
  14.                                         {
  15.                                                 Thread.sleep(10);
  16.                                         }
  17.                                         catch(Exception e)
  18.                                         {
  19.                                         }
  20.                                         System.out.println(Thread.currentThread().getName()+".."+tick--);
  21.                                 }
  22.                         }
  23.                 }
  24.         }
  25. }
  26. class  TicketDemo
  27. {
  28.         public static void main(String[] args)
  29.         {
  30.                 Ticket t=new Ticket();
  31.                 //t.run();
  32.                 Thread t1=new Thread(t);
  33.                 Thread t2=new Thread(t);
  34.                 Thread t3=new Thread(t);
  35.                 Thread t4=new Thread(t);
  36.                 t1.start();
  37.                 t2.start();
  38.                 t3.start();
  39.                 t4.start();

  40.         
  41.         }
  42. }
复制代码
请问线程为什么使用异常try{},catch{}的时候,而不用使该类去继承Exception或者RuntimeException呢?

作者: 张利    时间: 2012-11-16 22:37
本帖最后由 张利 于 2012-11-16 22:43 编辑

继承异常应该是在想要编写一个异常类的时候才会去继承
异常分为 Error 和Exception
     Exception又分为 受检查异常和不受检查异常(RuntimeException)
在这些异常里面,只有受检查异常要求在定义方法中的时候就要处理异常或者声明异常
处理异常就是用 try{}catch{}   
声明异常就是在方法的最后加上throws 异常

你的run()方法中,调用的Thread.sleep()这个方法会抛出InterruptedException异常
这个异常是受检查异常,因此需要try{}catch{}处理或者是在方法定义中声明
作者: 灵感    时间: 2012-11-16 22:39
当需要使用自定义异常时可以创建一个类继承Exception来满足对业务的需求
而在这个类中使用的是系统提供的异常,并且这个类跟自定义异常也没关系,
所以,try{},catch{}是用来处理异常,使该类去继承Exception或者RuntimeException是自定义异常类的前提
作者: 灵感    时间: 2012-11-16 22:43
补充一下,这个问题其实我感觉也就只有异常问题,标题“ 关于多线程和异常问题 ”,问题中两者并无什么关系




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2