zoukankan      html  css  js  c++  java
  • Which statement is true?

    void waitForSignal()
    {
        Object obj = new Object();
        synchronized(Thread.currentThread())
        {
            obj.wait();
            obj.notify();
        }
    }
    This code may throw an InterruptedException
    This code may throw an IllegalStateException
    This code may throw a TimeOutException after ten minutes
    This code will not compile unless”obj.wait()”is replaced with”(Thread)obj).wait()”
    Reversing the order of obj.wait()and obj.notify()may cause this method to complete normally

    解析:

    这题有两个错误的地方,第一个错误是 wait() 方法要以 try/catch 包覆,或是掷出 InterruptedException 才行   
    因此答案就是因为缺少例外捕捉的   InterruptedException

    第二个错误的地方是, synchronized 的目标与 wait() 方法的物件不相同,会有 IllegalMonitorStateException ,不过 InterruptedException 会先出现,所以这不是答案

    最后正确的程式码应该是这样:   
      

       void waitForSignal() {
    
    Object obj = new Object();
    
             synchronized (obj) {
    
                 try {
    
    obj.wait();
    
    } catch (InterruptedException e) {
    
    e.printStackTrace();
    
    }
    
    obj.notify();
    
    }
    
    }
  • 相关阅读:
    《R语言入门与实践》第七章:程序
    《R语言入门与实践》第六章:R 的环境系统
    《R语言入门与实践》第五章:对象改值
    《R语言入门与实践》第四章:R 的记号体系
    pandas包的应用
    numpy包的应用
    redis
    面试题
    qqqqqqq
    qqqqqqqqqqqqq
  • 原文地址:https://www.cnblogs.com/Toddll/p/7359852.html
Copyright © 2011-2022 走看看