1.定义
Object类是Java中所有类的根,是所有类的超类。所有的类对象,包括Java数组(数组也是引用),都实现Object类的方法。
2.API解析
public final native Class<?> getClass()
返回这个对象运行时的类对象,该类对象是被代表的类的static synchronized方法锁定的对象。
public native int hashCode()
返回对象的哈希码。
public boolean equals(Object obj) {
return (this == obj);
}
比较两个对象是否相等。
protected native Object clone() throws CloneNotSupportedException
创建并返回该对象的一个拷贝(Shallow-Copy)。这个“拷贝”的精确含义取决于该对象的类。
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
返回对象的字符串表示形式。建议所有的子类都要重写Object类的toString()方法。
public final native void notify();
唤醒正在此对象监视器(monitor)上等待的单个线程。如果有任何线程在此对象上等待,则选择其中一个唤醒,选择是任意的,并且可以根据实现情况进行选择。
在当前线程放弃对象锁(monitor)之前,唤醒的线程将无法运行。唤醒的线程将以通常的方式与其他在此对象上进行同步操作的线程竞争该对象的锁,以获取同步资源。
notify方法只能由拥有对象监视器(monitor)的线程调用,否则将抛出IllegalMonitorStateException异常。
一个线程成为对象监视器(monitor)的所有者有三种方式:
(1).通过执行该对象的同步(synchronized method)实例方法
eg:synchronized修饰普通同步方法。此时锁的是当前实例的对象。
public synchronized void synMethod(){
//do something
}
(2).通过执行在对象上同步(synchronized(object))的语句的主体
eg:synchronized修饰同步代码块。此时锁的是括号内的对象。
public void synMethod() {
synchronized (this){
//do something
}
}
(3).对于类型为Class的对象,执行该类的静态同步(static synchronized)方法
eg:synchronized修饰静态同步方法。此时锁的是类的class对象。
public static synchronized void synMethod(){
//do something
}
public final native void notifyAll();
唤醒正在此对象监视器(monitor)上等待的所有线程。
public final native void wait(long timeout) throws InterruptedException;
使当前线程等待,直到另一个线程为此对象调用notify或notifyAll方法或等待超过指定的超时时间。
当前线程必须拥有对象监视器(monitor)或对象锁。
wait方法使当前线程T将自身置于该监控对象的等待集中,然后放弃对该对象的所有同步声明。
出于线程调度的目的,线程T被禁用且处于休眠状态,直到发生四件事情之一:
(1).其他一些线程为此对象调用notify方法,并且恰好选择线程T作为要唤醒的线程;
(2).其他一些线程为此对象调用notifyAll方法;
(3).其他一些线程中断(Thread.interrupt())线程T;
(4).timeout超时时间过期。
注:如果当前线程在等待之前或者等待时被任何线程中断Thread.interrupt(),则抛出InterruptedException异常。
public final void wait(long timeout, int nanos) throws InterruptedException {
if (timeout < 0) {
throw new IllegalArgumentException("timeout value is negative");
}
if (nanos < 0 || nanos > 999999) {
throw new IllegalArgumentException(
"nanosecond timeout value out of range");
}
if (nanos > 0) {
timeout++;
}
wait(timeout);
}
使当前线程等待,直到另一个线程为此对象调用notify或notifyAll方法或等待超过指定的超时时间。
public final void wait() throws InterruptedException {
wait(0);
}
使当前线程等待,直到另一个线程为此对象调用notify或notifyAll方法。
protected void finalize() throws Throwable { }
当垃圾回收器确定不再有该对象的引用时,由垃圾回收器在对象上调用finalize方法回收对象。
原创不易,如需转载,请注明出处@author Davince!