23.4.1 Immutable Data

Actually, thread synchronization is necessary only for shared mutable data, i.e., data that may change during its lifetime. With shared immutable data that will not change, it’s not possible for a thread to see old or incorrect values as a result of another thread’s manipulation of that data.

When you share immutable data across threads, declare the corresponding data fields final to indicate that the values of the variables will not change after they’re initialized. This prevents accidental modification of the shared data, which could compromise thread safety. Labeling object references as final indicates that the reference will not change, but it does not guarantee that the referenced object is immutable—this depends ...

Get Java™ How To Program (Early Objects), Tenth Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.