Two variants of the double-check idiom bear noting. Occasionally, you may need to lazily initialize an instance field that can tolerate repeated initialization. If you find yourself in this situation, you can use a variant of the double-check idiom that dispenses with the second check. It is, not surprisingly, known as the single-check idiom. Here is how it looks. Note that field is still declared volatile
Ah, here's the exception I asked about on the earlier statement (about a cheaper strategy if the operation is idempotent: https://www.goodreads.com/notes/37646821-effective-java/74-robert/d28eee38-5bdd-40cf-95e9-8eaffc16c5be).