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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ぺsimon☆ 中级黑马   /  2013-5-17 13:58  /  1232 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. /*
  2. interrupt
  3. 这是一个强制清除冻结状态,让线程重新回到运行状态

  4. */

  5. class StopThread implements Runnable
  6. {
  7.         boolean flag=true;
  8.        
  9.         public synchronized void run()
  10.         {
  11.                 while(flag)
  12.                 {
  13.                         try
  14.                         {
  15.                                 this.wait();
  16.                         }

  17.                         catch(InterruptedException e)
  18.                         {
  19.                         System.out.println(Thread.currentThread().getName()+"清除了冻结状态");
  20.                         flag=false;
  21.                         }
  22.                         System.out.println(Thread.currentThread().getName()+"我来啦");
  23.                 }
  24.                 System.out.println(Thread.currentThread().getName()+"哈哈,我在外面");
  25.         }
  26. }

  27. class StopDemo
  28. {
  29.         public static void main(String[] args)
  30.         {
  31.                 StopThread st=new StopThread();               

  32.                 Thread t1=new Thread(st);
  33.                 Thread t2=new Thread(st);

  34.                 t1.start();
  35.                 t2.start();

  36.                 int x=1;
  37.                 while(true)
  38.                 {
  39.                         if(x++==60)
  40.                         {

  41.                        //注意问题在这里:这里t1调用interrupt方法,它会抛出异常,那么我们就要不抛要不就try,我们是做了try方法,但是是在上面的wait方法上做了处理,
  42.                          在这句代码并没有做处理,为什么呢?谢谢各位兄弟
  43.                                 t1.interrupt();
  44.                                 t2.interrupt();
  45.                                
  46.                                 break;
  47.                         }
  48.                         System.out.println(Thread.currentThread().getName()+x);
  49.                 }

  50.                 System.out.println(Thread.currentThread().getName()+"哈哈我是主线程");
  51.         }
  52. }

复制代码

评分

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

查看全部评分

2 个回复

倒序浏览
interrupt();抛的是SecurityException异常,他是RuntimeException的子类,可以不用处理
回复 使用道具 举报
逸盏清茶 发表于 2013-5-17 16:09
interrupt();抛的是SecurityException异常,他是RuntimeException的子类,可以不用处理

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