문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
|
java:lazy_evaluation [2020/05/18 17:41] kwon37xi |
java:lazy_evaluation [2020/05/19 09:28] (현재) kwon37xi |
||
|---|---|---|---|
| 줄 4: | 줄 4: | ||
| * [[https:// | * [[https:// | ||
| * [[java: | * [[java: | ||
| + | * [[https:// | ||
| ===== Effective Java 3rd Item 83 - double check ===== | ===== Effective Java 3rd Item 83 - double check ===== | ||
| 줄 9: | 줄 10: | ||
| * [[https:// | * [[https:// | ||
| <code java> | <code java> | ||
| - | | + | // Double-check idiom for lazy initialization of instance fields - Page 334 |
| - | private volatile FieldType field4; | + | 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() { | + | private FieldType getField4() { |
| - | FieldType result = field4; | + | FieldType result = field4; |
| - | if (result != null) // First check (no locking) | + | if (result != null) // First check (no locking) |
| - | return result; | + | return result; |
| - | | + | |
| - | if (field4 == null) // Second check (with locking) | + | if (field4 == null) // Second check (with locking) |
| - | field4 = computeFieldValue(); | + | field4 = computeFieldValue(); |
| - | return field4; | + | return field4; |
| - | } | + | |
| } | } | ||
| + | } | ||
| </ | </ | ||
| + | |||
| + | |||