
1.registerNatives()
该方法是static native,加载类的时候,注册本地函数。注册方法如下

2.equals

通过==比较地址,确定两个对象是否相等。如果需要通过equals比较值是否相等时,需要重写该方法。
3.clone
1.克隆的类必须实现Cloneable,否则抛出CloneNotSupportedException异常
2.克隆时浅拷贝,虽然返回的对象的是新的对象,但是内部的属性只是拷贝地址。
4.notify
1.调用时必须持有对象的锁,及必须在同步代码块中, synchronized(object){object.notify}
2.如果有多个线程都在等待锁释放,则notify只会随机通知一个。
3.调用notify后,wait的线程不会马上执行,还需要等待该对象释放锁。无论是wait还是notify,都需要先持有对象锁。
5.wait(long timeout)
public final native void wait(long timeout)throws InterruptedException;
1.同理执行前必须要持有锁,即必须放到同步代码块中
2.wait(0)表示无限等待,效果与wait()相同
3.可以被中断,即调用Thread的interrupt()方法后,触发InterruptedException异常
官网推荐:

wait(long timeoutMillis, int nanos)这个方法内,最终还是调用wait(long timeoutMillis)。
如果设置nanos,则直接timeoutMillis++