From the book Java concurrency in practice :
To publish an object safely, both the reference to the object and the object\'s state must be made visibl
There is no difference in what the effects of publishing volatile
vs final
, except that final
can only be set once in the constructor, and thus what you read should never change.
I believe a properly constructed object is indeed what you refer to, an object whose this
reference did not escape its constructor and has been published in a safe manner to the thread that it is used in.