try {
wait();
} catch (InterruptedException e) {
System.out.println("这是您的电影票,收您10块,找您5块");
num5--;
num10++;
}
notifyAll();
上面是代码中的片段,请问各位,为什么没有执行catch里面的内容呢?

解决方案 »

  1.   

    Wait方法与interrupt方法  
    当以wait方法等待时,与sleep一样可以取消.使用interrupt方法,可以对wait中的线程传达"不用等notify/notifyAll了,从等待中出来"的信号.    但是当线程wait时,有一点需要注意的,那就是锁的问题.线程进入等待状态时,会将自己拥有的锁释放,当对wait中的线程调用interrupt方法是,等待线程会重新获取锁,然后再抛出interruptedException.获取锁定之前,并无法抛出InterruptedException异
      

  2.   

    需要另外一个线程去notify,当notify后,会继续正常运行程序,不会抛异常.
    楼主可以参考经典的线程教学程序:生产者-消费者的例子.