ArrayList - добавить «одинаковые» объекты (same => equals, hashCode), Threads

У меня есть один вопрос. Что происходит, когда я дважды пытаюсь добавить «тот же» объект в ArrayList. Под "одинаковым" я подразумеваю объект отдельного класса, который идентифицируется как то же самое с equals () и hashCode (). Он имеет разные значения для большинства переменных-членов и был создан, возможно, из разных потоков, но для equals () и hashCode () это «то же самое». Заменяет ли второй объект затем первый?

Кроме того, что произойдет, если два потока попытаются добавить эти объекты в ArrayList в одно и то же время? Это вообще возможно? Если да, что произойдет?

Спасибо! :-)

[EDIT] Спасибо за все ответы! Должен ли я использовать synchronizedList вместо использования "synchronize (list) {}"? -> Я прочитал документацию, даже с synchronizedList, для итерации будет использоваться synchronize (list)

[EDIT2] Можно ли объявить synchronizedList как переменную-член? Я пробовал, но не получилось.

9
задан nano7 26 May 2011 в 12:44
поделиться