Object有哪些公用方法?

public class ObjectDemo {
    public static void main(String[] args) {
        Object object = new Object();

        /**
         * public final Class<?> getClass()
         * 返回此对象运行时类的 Class 对象。
         */
        System.out.println(object.getClass()); //class java.lang.Object

        /**
         * public int hashCode()
         * 返回此对象的一个哈希码值。
         */
        System.out.println(object.hashCode());//1987462029
        /**
         * public boolean equals(Object obj)
         * 如果此对象与 obj 参数相同,则返回 true;否则返回 false。
         */
        System.out.println(object.equals(new Object()));//false
        /**
         * public String toString()
         * 返回该对象的字符串表示形式。
         */
        System.out.println(object.toString());//java.lang.Object@7676438d
        /**
         * public final void notify()
         * 唤醒在此对象监视器上等待的单个线程。
         * 如果所有线程都在此对象上等待,则会选择唤醒其中一个线程。
         * 选择是任意性的,并在对实现做出决定时发生。
         */
        try {
            object.wait();
            //object.wait(10000);
            //object.wait(10000, 10000);
        } catch (InterruptedException e) {//如果当前线程不是此对象监视器的所有者。
            e.printStackTrace();
        }
        /**
         * notify()和notifyAll()都是Object对象用于通知处在等待该对象的线程的方法。
         * 两者的最大区别在于: 
 *          notifyAll使所有原来在该对象上等待被notify的线程统统退出wait的状态,变成等待该对象上的锁,一旦该对象被解锁,他们就会去竞争。 
 *          notify则文明得多他只是选择一个wait状态线程进行通知,并使它获得该对象上的锁,但不惊动其他同样在等待被该对象notify的线程们,
 *              当第一个线程运行完毕以后释放对象上的锁此时如果该对象没有再次使用notify语句,则即便该对象已经空闲,
 *              其他wait状态等待的线程由于没有得到该对象的通知,继续处在wait状态,
 *              直到这个对象发出一个notify或notifyAll,它们等待的是被notify或notifyAll,而不是锁。 
         */
        object.notify();  
        //object.notifyAll(); 
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值