Skip to content

Commit dde6dde

Browse files
authored
[아이템 83] 지연 초기화는 신중히 사용하라
1 parent d5edbac commit dde6dde

1 file changed

Lines changed: 34 additions & 0 deletions

File tree

chapter11/item83/README.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# 지연 초기화는 신중히 사용하라
2+
3+
## 질문
4+
5+
- volatile 을 언제 사용하는 걸까?
6+
- 한 메서드가 volatile로 선언된 값을 읽었을 때, 최종적인 값이 읽어야 한다.
7+
- 어떻게 구현될지는 벤더마다 다르므로, 약간 인터페이스 적인 느낌.
8+
- synchronize 를 사용해도 volatile을 사용해하는 걸까..?
9+
- 어떤 목적인지가 중요할듯.
10+
- 전자는 락이 필요하거나, 메서드가 concurrently한 실행이 요구될 때
11+
- 후자는 해당 변수로 행해지는 읽거나 쓰는 모든 접근들이 메인 메모리에 적용되는 것이 요구될 때 (이 경우에 접근하는 순서는 중요하지 않을 때..)
12+
- [difference-between-volatile-and-synchronized-in-java](https://stackoverflow.com/questions/3519664/difference-between-volatile-and-synchronized-in-java)
13+
14+
## 정리
15+
16+
- 지연 초기화는 필요할 때 까지 하지마라
17+
- 대부분 상황에서 일반적인 초기화가 지연 초기화 보다 낫다.
18+
- 필드 타입이 long, double을 제외한 다른 기본 타입이라면, 단일 검사 필드 선언에서 volatile 한정자를 없애도 된다.
19+
- 인스턴트 필드는 이중 검사 관용구..
20+
- 이중 검사 관용구?
21+
- 두번 검사하는 것..
22+
- 정적 필드는 지연 초기화 홀더 클래스 관용구...
23+
- 지연 초기화 홀더 클래스..?
24+
- 특성 메서드가 호출 되는 순간, 정적필드가 생성되도록 만들어주는 것.
25+
26+
27+
28+
## QnA
29+
- Spring Lazy Loading에 대해서..
30+
- https://www.baeldung.com/spring-boot-lazy-initialization
31+
- https://www.baeldung.com/hibernate-lazy-eager-loading
32+
- 초기화 순환성(initialization circularity) 에 대해 읽어볼 만한 글
33+
- https://link.springer.com/content/pdf/10.1007/3-540-45739-9_5.pdf
34+
- 1,2 페이지는 흥미롭다!

0 commit comments

Comments
 (0)