在Java中,是否总是如此,如果thread1.getId() == thread2.getId()
,那么thread1.equals(thread2)
?如果两个线程对象的ID相同,线程对象本身是否相等?
我试图追踪多线程应用程序中的错误,并且我注意到它使用Thread.equals()
比较线程而不是比较它们的ID。 Thread
类不会覆盖其equals
方法,因此两个Thread
对象的唯一方法是如果它们具有相同的内存地址。
编辑:
到目前为止,我看到两个原因,答案可能是否定的。
thread1
可能已被终止,并thread2
可能被重复使用相同的ID。因此,ID是平等的,但线程不是。thread1
和thread2
是对同一个线程的引用,但它们不是同一个对象。 (不知道这是否可能。)
ID是唯一的。 – assylias