<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    I am thinking of a case where the CPU already has the value at that
    address in cache. The value cached has been GCed long since, and now
    that memory is reused by a reference to Resource. If accesses to
    static members are not volatile, then what stops the thread from
    observing the static initialization completed, and the reference
    that was not nulled yet, and pointing somewhere dark.<br>
    <br>
    On the other hand, if there is a ordering constraint on static
    initializer finishing, the other threads observing this, and those
    threads loading the values of static fields, then any static field
    initialization is thread safe without extra requirement to mark it
    volatile. Since it seems the point of the remark was that any value
    can be observed, I assume there is no ordering constraint, go to
    original question: what enforces the order of observing the class is
    initialized and loading the reference.<br>
    <br>
    Alex<br>
    <br>
    <br>
    <div class="moz-cite-prefix">On 06/02/2013 19:21, Stanimir Simeonoff
      wrote:<br>
    </div>
    <blockquote
cite="mid:CAEJX8oqAff4YEtqeSY7PQRfUcXOEYQh+XErC2Od+NiB9vaM_LA@mail.gmail.com"
      type="cite"><br>
      <div class="gmail_quote">
        <blockquote class="gmail_quote" style="margin:0pt 0pt 0pt
          0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
          <div bgcolor="#FFFFFF" text="#000000"> Then it may also return
            a non-null value that is not even a valid reference,</div>
        </blockquote>
        It will be a valid reference. It may not properly initialized
        instance but still a valid reference.<br>
        <div> </div>
        <blockquote class="gmail_quote" style="margin:0pt 0pt 0pt
          0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
          <div bgcolor="#FFFFFF" text="#000000"> and certainly doesn't
            necessarily reference a valid Resource instance.<br>
            <br>
          </div>
        </blockquote>
        <div>There is no definition of a valid Resource coming from the
          snippet but the Resource c-tor can be invoked multiple times
          given the lack of synchronization/locking. <br>
        </div>
        <div><br>
          <br>
          Stanimir <br>
        </div>
      </div>
      <br>
    </blockquote>
    <br>
  </body>
</html>