Niezmienne obiekty mogą być przydatne w aplikacjach wielowątkowych. Wiele wątków może działać na danych reprezentowanych przez niezmienne obiekty bez obawy o zmianę danych przez inne wątki. Obiekty niezmienne są zatem uważane za bardziej bezpieczne wątkowo niż obiekty zmienne.
Jaki jest sens niezmiennych obiektów?
Maksymalne poleganie na niezmiennych obiektach jest powszechnie akceptowane jako zdrowa strategia tworzenia prostego, niezawodnego kodu. Obiekty niezmienne są szczególnie przydatne w aplikacjach współbieżnych. Ponieważ nie mogą zmienić stanu, nie mogą zostać uszkodzone przez interferencję wątku lub obserwowane w niespójnym stanie.
Które obiekty powinny być nazywane niezmiennymi?
Obiekty niezmienne to po prostu obiekty, których stan (dane obiektu) nie może się zmienić po konstrukcji. Przykłady niezmiennych obiektów z JDK obejmują String i Integer. Obiekty niezmienne znacznie upraszczają Twój program, ponieważ: są proste w konstruowaniu, testowaniu i użytkowaniu.
Jak zaimplementować niezmienny obiekt?
Aby stworzyć niezmienny obiekt, musisz przestrzegać kilku prostych zasad:
- Nie dodawaj żadnej metody ustawiającej.
- Zadeklaruj wszystkie pola jako ostateczne i prywatne.
- Jeśli pole jest obiektem mutowalnym, utwórz jego kopie obronne dla metod pobierających.
- Jeśli zmienny obiekt przekazany do konstruktora musi być przypisany do pola, utwórz jego kopię obronną.
Gdzie jesteśmyużyć niezmiennej klasy w Javie?
Niezmienne klasy ułatwiają programowanie współbieżne. Niezmienne klasy zapewniają, że wartości nie zostaną zmienione w trakcie operacji bez użycia zsynchronizowanych bloków. Unikając blokad synchronizacji, unikasz zakleszczeń.