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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 余松霖 黑马帝   /  2011-12-17 15:16  /  2431 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 余松霖 于 2011-12-17 16:28 编辑
  1. public void run()
  2.         {
  3.                 while(true)
  4.                 {
  5.                         synchronized(obj)
  6.                         {
  7.                             if(Tick>0)
  8.                             {
  9.                                try{Thread.sleep(1);}catch(Exception e){};
  10.                                System.out.println(Thread.currentThread().getName()+".......卖票:......."+Tick--);
  11.                             }
  12.                         }
  13.                 }
  14.         }
复制代码
中间为什么要这样try{Thread.sleep(1);}catch(Exception e){};       直接Thread.sleep(10)  这样会有异常吗

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

5 个回复

正序浏览
舒远 黑马帝 2011-12-18 13:35:37
地板
sleep方法的声明很明确标出了会抛出:InterruptedException,这个异常是checked异常也就是非运行时异常。那么在代码中调用sleep方法是就必须进行捕获或者继续向外抛出。而Thread类中的run方法没有声明抛出异常。那么Thread的子类就不能抛出异常。所以在你的代码中就只能进行try catch的捕获。这是语法上的规则,必须这么做的、否则无法通过编译。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
public static void sleep(long millis)
                  throws InterruptedException
这个方法会抛出异常

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
宋双 黑马帝 2011-12-17 15:24:05
板凳
sleep
public static void sleep(long millis)
                  throws InterruptedException
在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。该线程不丢失任何监视器的所属权。
使用sleep这个方法时,默认代码是抛出了异常,所以使用时必须自己处理活着再次抛出,如果不这样做,会发生异常时会出错。按照毕老师的话就是 挂了、、

评分

参与人数 1技术分 +1 收起 理由
admin + 1 答题有奖!

查看全部评分

回复 使用道具 举报
你调用了 Thread.sleep()方法,该方法里面有抛出异常,且这个异常好象不是RuntimeException里的成员,所以需要处理。
处理方法有2个,一个是继续抛,再一个就是try了。   

因为类中会有覆盖等子父类方面的问题,如果继承的父类中没有该异常,则子类是不能抛出的。 所以一般都是用try直接处理掉

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
thread.sleep()是让线程休眠,也就是暂时中断线程 ,在中断过程中难免会出现异常,比如说你可能调用interrupte来终止线程,这样就会抛出InterruptException,只有捕获异常进行处理,才能正确的终止线程如果你是用记事本编程的话不进行抛出,程序会报错
在使用一些软件编写的时候,一般都会提醒你抛出异常。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马