This is just a summary of alternatives to the double-checked locking pattern, which has been shown to have potential problems. The alternatives are taken from a CERT wiki article. The motivations for the pattern come from three concerns:
- avoid constructing an object that is expensive to construct, unless-until it is needed
- avoid more than one instantiation of that object, and
- avoid the overhead of synchronization for the more common case of fetching the object.
