In almost every case (that is: all cases except the very first ones), instance
won't be null. Acquiring a lock is more costly than a simple check, so checking once the value of instance
before locking is a nice and free optimization.
This pattern is called double-checked locking: http://en.wikipedia.org/wiki/Double-checked_locking