1.Object 類的結構
如圖可知,Object 類中的方法,按照用途可以分爲以下幾種:
- 構造函數hashCode() 和 equals() 函數用來判斷對象是否相同
- wait(), wait(long), wait(long,int), notify(), notifyAll() 線程等待和喚醒
- toString() 和 getClass()
- clone()
- finalize() 用於在垃圾回收
- registerNatives() 本地註冊
2. 方法說明
- clone方法
保護方法,實現對象的淺複製,只有實現了 Cloneable 接口纔可以調用該方法,否則拋出 CloneNotSupportedException 異常。 - getClass 方法
final 方法,獲得運行時類的類型。 - toString 方法
返回一個 String 對象,用來標識自己。 - finalize 方法
該方法用於釋放資源。當垃圾回收器確定不存在對該對象的更多引用時,由對象的垃圾回收器調用此方法。 - equals 方法
用於確認兩個對象是否“相同”。 - hashCode 方法
用於獲取對象的哈希值。 - wait 方法
用於讓當前線程失去操作權限,當前線程進入等待序列。
wait方法就是使當前線程等待該對象的鎖,當前線程必須是該對象的擁有者,也就是具有該對象的鎖。wait()方法一直等待,直到獲得鎖或者被中斷。wait(long timeout)設定一個超時間隔,如果在規定時間內沒有獲得鎖就返回。調用該方法後當前線程進入睡眠狀態,直到以下事件發生。
(1)其他線程調用了該對象的notify方法。
(2)其他線程調用了該對象的notifyAll方法。
(3)其他線程調用了interrupt中斷該線程。
(4)時間間隔到了。
此時該線程就可以被調度了,如果是被中斷的話就拋出一個InterruptedException異常。
- notify 方法
喚醒在此對象監視器上等待的單個線程。 - notifyAll 方法
喚醒在此對象監視器上等待的所有線程。