Synchronization

We only need to synchronize access to mutable data — data that may change in its lifetime. We don't need to synchronize access to immutable data because it is not possible for a thread to see stale or incorrect value from another thread's manipulation.