SCJP考试试题解析十五


我的QQ号:2535279 


www.javaedu.com.cn

    Given the exhibit:
    
    void waitForSignal(){
        
        Object obj = new Object();
        synchronized(Thread.currentThread()){
            obj.wait();
            obj.notify();
        }
    }
    
    Which statement is true?
    
    A. This code may throw an InterruptedException
    
    B. This code may throw an IllegalStateException
    
    C. This code may throw a TimeOutException after ten minutes
    
    D. This code will not compile unless "obj.wait()" is replaced with "((Thread)obj).wait()"
    
    E.Reversing the order of obj.wait() and obj.notify() may cause this method to complete normally
    
    解析:
    
    wait()方法会抛出两个异常:
    
    IllegalMonitorStateException - 如果当前线程不是此对象监视器的所有者。 
    
  InterruptedException - 如果在当前线程等待通知之前或者正在等待通知时,任何线程中断了当前线程。在抛出此异常时,当前线程的中断状态 被清除。

    那么答案选择 A 
    
    关于另外一个异常请查阅API