에서 나는 여러 스레드에 의해 작성된 널 (NULL) 변수가있는 클래스,이에 대응하기 위해동시성 코 틀린
class A {
var s: String? = null //var accessed by multiple threads
fun doStuff() {
if (s != null) {
//not safe
}
}
}
같은 것을, 나는 보통 이렇게
class A {
var s: String? = null //var accessed by multiple threads
fun doStuff() {
val sCopy = s
if (sCopy != null) {
//safe now
}
}
}
같은 불변의 복사본을 만들 수 있습니다 휘발성, 동기화 된 등의 동시성 도구에 대해 읽었지 만 멀티 스레딩을 잘 수행하지 못했지만 어떻게 처리해야하는지 알고 있으며 불변 값을 만드는 것보다 달성 할 수있는 더 좋은 방법이 있다고 확신합니다. 어떻게할까요? ?
분명히하기 위해, 내부 블록이 두 경우 모두's'에 쓰기를 수행하고있는 것입니까? –
@OliverCharlesworth 아니요 – user3491043
오, 그렇다면 글이 어디에서 발생합니까? FWIW는'synchronized'를 사용하여 아마 여기에 무차별 대치 솔루션입니다. –