【发布时间】:2011-05-26 12:16:51
【问题描述】:
我有一个问题。当我尝试将“相同”对象两次添加到 ArrayList 时会发生什么。 “相同”是指单个类的对象,用 equals() 和 hashCode() 标识为相同。它对于大多数成员变量具有不同的值,并且可能是从不同的线程创建的,但是对于 equals() 和 hashCode() 它是“相同的”。 然后第二个对象会替换第一个对象吗?
另外,如果两个线程试图同时将这些对象添加到 ArrayList 会发生什么?这甚至可能吗?如果是,会发生什么?
谢谢! :-)
[编辑] 感谢所有答案!我应该使用 synchronizedList 而不是使用“synchronize(list){}”吗? --> 我阅读了文档,即使使用了同步列表,也应该使用迭代同步(列表)
[编辑2] 可以将同步列表声明为成员变量吗?我试过了,但没有用。
【问题讨论】:
标签: java multithreading arraylist equals hashcode