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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ぺsimon☆ 中级黑马   /  2013-4-23 01:05  /  1204 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ぺsimon☆ 于 2013-4-25 23:10 编辑
  1. class StopThread implements Runnable
  2. {
  3.         private boolean flag=true;
  4.         public synchronized void run() //定义一个同步函数
  5.         {
  6.         while(flag) //如果flag等于true执行循环体
  7.         {
  8.         try{this.wait();}catch(Exception e){flag=true;}  //处理异常
  9.         for(int x=0;x<60;x++)
  10.         {
  11.         System.out.println(Thread.currentThread().getName()+"---"+x);
  12.         }
  13.         }
  14.         }
  15.         public boolean ChangeFlag()
  16.         {
  17.         return flag=false; //返回 flag=false
  18.         }
  19. }

  20. class StopThreadDemo
  21. {
  22.         public static void main(String[] args)
  23.         {
  24.         StopThread st=new StopThread(); //创建对象
  25.         Thread t1=new Thread(); //创建一个线程t1
  26.         Thread t2=new Thread(); //创建一个线程t2
  27.         t1.start(); //开启线程t1
  28.         t2.start(); //开启线程t2
  29.         for(int x=0;x<60;x++)
  30.         {
  31.         if(x==59)
  32.         st.ChangeFlag(); //调用ChangeFlag()方法
  33.         t1.interrupt();//调用interrupt()方法,结束线程的冻结状态
  34.         System.out.println("main-----"+x);
  35.         }
  36.         }
  37. }
复制代码
问题:
代码:t1.interrupt();//调用interrupt()方法,结束线程的冻结状态
interrupt()方法有异常抛出,看视频的时候老师说在同步函数上面已经try,catch了
异常就不用再处理了为什么呢?
按照我的理解是调用的方法有异常抛出要不自己try,catch处理,要不就抛,
为什么在同步函数
while(flag) //如果flag等于true执行循环体
{
try{this.wait();}catch(Exception e){flag=true;} //处理异常
里处理了就不用处理了呢?


评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

3 个回复

倒序浏览
抛异常一般用这俩个关键字throws和throw。一个是在类里抛,一个是在方法里抛。而try,catch是捕获异常自己来处理的!如果处理不了在再把这个异常链传递下去。也就是再throw一次。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
wait()方法会抛出异常,所以必须处理,

但是wait()又处在run()方法中,所以处理是只能try,不能抛,因为Runnable接口中的run方法没抛异常,

wait()声明是要抛出异常的,经过try处理后,就相当于不再向外抛出异常了,因为异常被catch捕获了,就不向外抛了

所以run方法也不用处理了

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
如果问题未解决,请继续追问,如果问题解决了,请将问题分类改为“已解决”,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马