- There is no way for multiple threads to concurrently mutate or access an immutable value as no thread can change an immutable object.
- When passing a value into foreign code, one can be assured that an immutable value will not change.
- There are fewer concerns - immutable objects cannot have complex states that change over time.
- When an object is quite large, it is inefficient to update the full object graph. In some cases, it is best to do an in-place modification.