OpenJdk源码阅读——Object

wait()

 public static void main(String[] args) throws InterruptedException {
        Object o = new Object();
        o.wait();
}

报错:
在这里插入图片描述

在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,当前线程等待。 换句话说,此方法的行为就好像它仅执行wait(0) 调用一样。
当前线程必须拥有此 对象监视器 。该线程发布对此监视器的所有权并等待 ,直到其他线程通过调用 notify 方法,或notifyAll 方法通知在此对象的监视器上等待的线程醒来。 然后该线程将等到重新获得对监视器的所有权后才能继续执行。
对于某一个参数的版本,实现中断和虚假唤醒是可能的,而且此方法应始终在循环中使用:

                                    synchronized (obj) {
                                           while (<condition does not hold>)
                                                 obj.wait(); 
                                           // Perform action appropriate to condition
                                     }

此方法只应由作为此对象监视器的所有者的线程来调用。
抛出: IllegalMonitorStateException - 如果当前线程不是此对象监视器的所有者。
InterruptedException - 如果在当前线程等待通知之前或者正在等待通知时,任何线程中断了当前线程。在抛出此异常时,当前线程的中断状态被清除。

equals()

OpenJdk源码阅读——Object_第1张图片
equals()方法只能用作引用类型的比较,与“==”作用相同,比较是否指向同一个对象。
在这里插入图片描述

你可能感兴趣的:(JDK源码)