title: Java concurrency - inline initialized non-final field and safe publication
body: <p>Assume I have the following class:</p>
  
  <pre><code>public abstract class Test {
      private List&lt;String&gt; strings = new ArrayList&lt;&gt;();
  
      // to be called concurrently
      public int getStringsSize() {
          return strings.size();
      }
  }
  </code></pre>
  
  <p>Is there a chance that <code>getStringsSize()</code> will throw NPE for some subclass of <code>Test</code>? Or what else can go wrong? As far as I understand there're no Java Memory Model guarantees about such case.</p>