JDK源码阅读笔记--Object

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++

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容