// Double-check idiom for lazy initialization of instance fields - Page 334 private volatile FieldType field4; // NOTE: The code for this method in the first printing had a serious error (see errata for details)! private FieldType getField4() { FieldType result = field4; if (result != null) // First check (no locking) return result; synchronized(this) { if (field4 == null) // Second check (with locking) field4 = computeFieldValue(); return field4; } }