...
Similarly, it is inappropriate to start threads from constructors (see CON14-J. Do not let the "(this" ) reference escape during object construction for more information). Creating timers that perform recurring tasks and starting those timers from within code responsible for initialization also creates liveness issues.
...
| Wiki Markup |
|---|
<ac:structured-macro ac:name="anchor" ac:schema-version="1" ac:macro-id="1dd107723bc16a0a-2ccdbbfa-41b64432-8dba8d64-49f0bb91a164112b8cb906c7"><ac:parameter ac:name="">CON03-EX1</ac:parameter></ac:structured-macro> *CON03-EX1:* It is permissible to start a background thread during class initialization provided the thread does not access any fields. For example, the {{ObjectPreserver}} class (based on \[[Patterns 02|AA. Java References#Patterns 02]\]) shown below provides a mechanism for storing object references, which prevents an object from being garbage-collected, even if the object is not dereferenced in the future. |
...