От Документация по сборке Java 1.6 Framework:
Коллекции, которые не поддерживают какие-либо операции модификации (например,
add
,remove
иclear
), называются немодифицируемыми. [...] Коллекции, которые дополнительно гарантируют, что никакие изменения в объекте Collection никогда не будут видны, называются неизменяемыми.
Второй критерий меня немного смущает. Учитывая, что первая коллекция не поддаётся учету, и полагая, что исходная ссылка на собрание была удалена, каковы изменения, которые упоминаются во второй строке? Это относится к изменениям элементов, содержащихся в коллекции, т.е. к состоянию элементов?
Второй вопрос:
Для того, чтобы коллекция была неизменной, как это делается для предоставления дополнительных указателей? Если состояние элемента в коллекции обновляется потоком, достаточно ли для неизменности, чтобы эти обновления в состоянии не были видны в потоке, содержащем неизменяемую коллекцию?
Изменить: (выделение фокуса второго вопроса):
Для того, чтобы коллекция была неизменяемой, как нужно обставлять дополнительные указатели?