Skip to content

아이템 83. 지연 초기화는 신중히 사용하라 #188

Answered by JoisFe
corock asked this question in 3. 과제
Discussion options

You must be logged in to vote

한 번은 동기화 없이 검사하고, 두 번째는 동기화하여 검사하는 방식으로 필드의 값을 총 두 번 검사
-> 이중 검사가 왜 ?? 성능을 높여주지 궁금하여 chatgpt에 물어봤습니다.

지연 초기화에서 한 번은 동기화 없이 필드를 검사하고, 두 번째는 동기화하여 검사하는 방식으로 필드의 값을 총 두 번 검사하는 이유는 성능 향상과 관련이 있습니다.

첫 번째 검사에서는 필드의 값이 이미 초기화되어 있는지 확인합니다. 이 경우에는 두 번째 검사와 동기화를 할 필요가 없기 때문에 불필요한 동기화를 줄일 수 있습니다. 따라서 이로 인해 불필요한 오버헤드가 감소하고, 성능 향상이 이루어집니다.

두 번째 검사에서는 필드의 값이 초기화되어 있지 않은 경우에만 동기화를 하여 필드를 초기화합니다. 이때, 동기화를 통해 다른 스레드가 필드의 값을 수정하는 것을 방지합니다. 또한, 이렇게 초기화된 필드는 이후에는 더 이상 동기화가 필요하지 않기 때문에 불필요한 오버헤드를 줄일 수 있습니다.

이처럼 지연 초기화에서는 필드의 값을 필요한 시점에 초기화하는 방식으로 성능 향상을 이루고 있으며, 이를 위해 불필요한 동기화를 줄이는 것이 중요합니다.

Replies: 1 comment

Comment options

You must be logged in to vote
0 replies
Answer selected by corock
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
11장 동시성 이펙티브 자바 11장 (동시성)
2 participants