在Java中,是否總是如此,如果thread1.getId() == thread2.getId()
,那麼thread1.equals(thread2)
?如果兩個線程對象的ID相同,線程對象本身是否相等?
我試圖追蹤多線程應用程序中的錯誤,並且我注意到它使用Thread.equals()
比較線程而不是比較它們的ID。 Thread
類不會覆蓋其equals
方法,因此兩個Thread
對象的唯一方法是如果它們具有相同的內存地址。
編輯:
到目前爲止,我看到兩個原因,答案可能是否定的。
thread1
可能已被終止,並thread2
可能被重複使用相同的ID。因此,ID是平等的,但線程不是。thread1
和thread2
是對同一個線程的引用,但它們不是同一個對象。 (不知道這是否可能。)
ID是唯一的。 – assylias