프로그래밍 놀이터/Kotlin, Coroutine
[kotlin] LazyThreadSafeMode SYNCHRONIZED vs. PUBLICATION
돼지왕 왕돼지
2021. 1. 28. 16:46
반응형
-
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
끝.
반응형