From bdc828a7af2bdfac28e3c38bd7d1a2ae05736ccc Mon Sep 17 00:00:00 2001 From: Joshua Bloch Date: Wed, 11 Sep 2019 21:29:41 -0700 Subject: [PATCH] Fixed double check idiom example from page 334 as was done in the third printing. See errata page for details: https://docs.google.com/document/d/1mAeEgQu4H4ADxa03k7YaVDjIP5vJBvjVIjg3DIvoc8E/ --- src/effectivejava/chapter11/item83/Initialization.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/effectivejava/chapter11/item83/Initialization.java b/src/effectivejava/chapter11/item83/Initialization.java index 15f40bff..83f05e0c 100644 --- a/src/effectivejava/chapter11/item83/Initialization.java +++ b/src/effectivejava/chapter11/item83/Initialization.java @@ -25,6 +25,7 @@ private static class FieldHolder { // 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) @@ -38,6 +39,7 @@ private FieldType getField4() { } + // Single-check idiom - can cause repeated initialization! - Page 334 private volatile FieldType field5;