This looks like double checked locking.  http://en.wikipedia.org/wiki/Double-checked_locking

Should `defaultHash` have the `volatile` keyword?