title: Please explain initialization safety as spelled out in Java memory model
body: <ol>
  <li>Can some one explain <strong>initialization safety</strong> as required by Java memory model ?</li>
  <li>How does the <strong>final</strong> fields help in achieving <em>initialization safety</em> ?</li>
  <li>What role does the <strong>constructor</strong> play in ensuring <em>initialization safety</em> ?</li>
  </ol>