on(
"nanosecond timeout value out of range");
}
if (nanos >= 500000 || (nanos != 0 && timeout == 0)) {
timeout++;
}
wait(timeout);
}
/*
在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当
前线程等待。换句话说,此方法的行为就好像它仅执行 wait(0) 调用
一样。
当前线程必须拥有此对象监视器。该线程发布对此监视器的所有权并等
待,直到其他线程通过调用 notify 方法,或 notifyAll 方法通知在此对
象的监视器上等待的线程醒来。然后该线程将等到重新获得对监视器的
所有权后才能继续执行。
*/
public final void wait() throws InterruptedException {
wait(0);
}
//当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收
器调用此方法
protected void finalize() throws Throwable { }
}
通过Object类源码可以看到一些方法用native修饰,使用native修饰符修饰的方法需要非java语言来实现,比如C,C++。这个特征并非java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern "C"告知C++编译器去调用一个C的函数。
在定义一个native method时,并不提供实现体(有些像定义一个java interface),因为其实现体是由非java语言在外面实现的。