1. Initialization safety allows properly constructed immutable objects to be shared safely across threads without using synchronization, irrespective of even if they published using a data race.
2. Objects having final field, initialization safety prevent reordering any part of construction with the initial load of a reference to that object.