 
                            ...
This guideline focuses on the potential consequences of this escaping during object construction including race conditions and improper initialization. For example, declaring a field final ensures that all threads will see it fully initialized only when the this reference does not escape during the corresponding object's construction. The guideline CON26-J. Do not publish partially-constructed objectsobjects that are partially initialized discusses the guarantees provided by various mechanisms for safe publication and relies on conformance to this guideline. In general, it is important to detect cases where the this reference can leak out beyond the scope of the current context. In particular, public variables and methods should be carefully scrutinized.
...
The constructor publishes the this reference after initialization has concluded. However, the caller must ensure that it does not see the default value of the field, before it is initialized (a violation of CON26-J. Do not publish partially-constructed objectsobjects that are partially initialized).
If the pub field is not declared as volatile initialization statements may be reordered. The Java compiler does not allow declaring the static pub field as final in this case.
...
Because the constructor is private, untrusted code cannot create instances of the class, prohibiting the this reference from escaping. Using a public static factory method to create new instances also protects against publication of partially constructed objects (CON26-J. Do not publish partially-constructed objectsobjects that are partially initialized).
Noncompliant Code Example (thread)
...