黑马程序员技术交流社区

标题: 对于interrupted方法有不明白的地方 [打印本页]

作者: ぺsimon☆    时间: 2013-5-17 13:58
标题: 对于interrupted方法有不明白的地方
  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. }

复制代码

作者: 逸盏清茶    时间: 2013-5-17 16:09
interrupt();抛的是SecurityException异常,他是RuntimeException的子类,可以不用处理
作者: ぺsimon☆    时间: 2013-5-17 17:06
逸盏清茶 发表于 2013-5-17 16:09
interrupt();抛的是SecurityException异常,他是RuntimeException的子类,可以不用处理

哦,谢谢




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