Jak wspomniano powyżej niemodyfikowalna nie jest niezmienna, ponieważ niemodyfikowalna kolekcja może zostać zmieniona, jeśli na przykład niemodyfikowalna kolekcja ma bazową kolekcję delegatów, do której odwołuje się jakiś inny obiekt, a ten obiekt ją zmienia.
Jeśli chodzi o niezmienne, nie jest nawet dobrze zdefiniowane. Jednak ogólnie oznacza to, że obiekt „nie ulegnie zmianie”, ale należałoby to zdefiniować rekurencyjnie. Na przykład mogę zdefiniować niezmienne w klasach, których zmienne instancji są wszystkimi elementami pierwotnymi i których metody nie zawierają żadnych argumentów i zwracają prymitywy. Następnie metody rekurencyjnie zezwalają, aby zmienne wystąpienia były niezmienne, a wszystkie metody zawierały niezmienne argumenty, które zwracają niezmienne wartości. Należy zagwarantować, że metody będą zwracać tę samą wartość w czasie.
Zakładając, że możemy to zrobić, istnieje również pojęcie bezpieczne. I możesz uwierzyć, że niezmienny (lub niezmienny w czasie) oznacza również bezpieczeństwo wątków. Jednak tak nie jesti to jest główna kwestia, którą tutaj poruszam, która nie została jeszcze odnotowana w innych odpowiedziach. Mogę skonstruować niezmienny obiekt, który zawsze zwraca te same wyniki, ale nie jest bezpieczny wątkowo. Aby to zobaczyć, załóżmy, że konstruuję niezmienną kolekcję, utrzymując dodawanie i usuwanie w czasie. Teraz niezmienna kolekcja zwraca swoje elementy, patrząc na kolekcję wewnętrzną (która może się zmieniać w czasie), a następnie (wewnętrznie) dodając i usuwając elementy, które zostały dodane lub usunięte po utworzeniu kolekcji. Oczywiście, chociaż kolekcja zawsze zwracałaby te same elementy, nie jest bezpieczna wątkowo tylko dlatego, że nigdy nie zmieni wartości.
Teraz możemy zdefiniować niezmienne jako obiekty, które są bezpieczne dla wątków i nigdy się nie zmienią. Istnieją wytyczne dotyczące tworzenia niezmiennych klas, które generalnie prowadzą do takich klas, jednak należy pamiętać, że mogą istnieć sposoby tworzenia niezmiennych klas, które wymagają uwagi na bezpieczeństwo wątków, na przykład, jak opisano w powyższym przykładzie kolekcji „migawka”.