반응형
-
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
끝.
반응형
'프로그래밍 놀이터 > Kotlin, Coroutine' 카테고리의 다른 글
[coroutine] Flow vs RxJava (0) | 2021.05.10 |
---|---|
[coroutine] SharedFlow & StateFlow (0) | 2021.05.08 |
[Kotlin] Coroutine 소개 (0) | 2020.08.24 |
[Kotlin] Coroutine 은 어떻게 동작하는가? (0) | 2020.08.23 |
[coroutine] java.lang.IllegalStateException: Module with the Main dispatcher is missing. Add dependency providing the Main dispatcher, e.g. 'kotlinx-coroutines-android' (0) | 2020.08.16 |
댓글