Java will guarantee that all thread will see correct values of final fields that were set by the constructor, regardless of how object is published.