A special case of
the singleton constructor
is simply lazy-initializing a bunch of variables.
In a single-threaded application you can do something like this:
This works fine in a single-threaded program, but if the
program is multi-threaded, then two threads might end up
trying to lazy-initialize the variables, and there are