Java: starting a new thread in a constructor
Have a look at this link http://www.ibm.com/developerworks/java/library/j-jtp0618/index.html#code4
This is do with implicit references to this
and subclassing
.
Starting a thread from the constructor lets the started thread access the object being constructed before it's properly constructed, and thus makes a not completely constructed object available to the new thread.
You could create the thread in the constructor, and provide a "startup" method to start the thread from the outside.
Or you could make the constructor and startup methods private and provide a static factory method which would create the object, start the thread, and return the created object.