본문 바로가기
프로그래밍 놀이터/Kotlin, Coroutine

[kotlin] LazyThreadSafeMode SYNCHRONIZED vs. PUBLICATION

by 돼지왕 왕돼지 2021. 1. 28.
반응형

 

-

lazy 함수의 기본 thread-safe 동작은 SYNCHRONIZED 이다.

즉 thread-safe 하다는 말이다.

 

 

-

SYNCHRONIZED 는 우리가 익히 알고 있는 동기화가 보장된 호출이다.

한 thread 에서만 접근할 수 있고, 해당 연산이 끝난 결과값을 다른 thread 에서 공유해서 사용하는 방식이 된다.

 

 

-

PUBLICATION 은 초기화 과정을 여러 스레드가 동시에 수행할 수 있으나, 다른 스레드에서 초기화하여 할당된 값이 있다면 그 값을 반환한다. 다시 말해 init 코드는 여러 번 탈 수 있으나 race condition 에서 한 thread 에 의해 최초 write 된 값을 모든 thread 에서 share 해서 사용하는 방식이 된다.

 

 

-

NONE 은 별도의 thread-safe 처리가 없다.

 

-

참고 : https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-lazy-thread-safety-mode/index.html

 

LazyThreadSafetyMode - Kotlin Programming Language

 

kotlinlang.org

 

끝.

 

 

 

반응형

댓글