如何在Kotlin随播对象中设置线程安全全局变量?

问题描述 投票:0回答:1

我想在伴侣对象中设置一个可变变量,并以静态方式在其他方法中使用它。

class GlobalVariable {
    companion object {
        private var flag = false

        fun modifyFlag(){
          flag = setFlagValue() //this method written in other class to assign value to the flag
        }
        fun getVal(): Boolean = this.flag // this is to get flag value in other methods static way, like GlobalVariable.getVal()
    }
}

flag是我需要的变量,我将在其他方法中调用modifyFlag()方法,将值设置为标志,然后在需要时使用GlobalVariable.getVal()

不确定是否以这种方式是线程安全的。还有其他方法可以在Kotlin中设置全局变量吗?

kotlin global-variables
1个回答
0
投票

[我认为,如果您在JVM上运行Kotlin应用,则应尝试此操作。注释@Synchronized将锁定方法,因此线程在另一个线程执行该注释时将无法访问它。

class GlobalVariable {
    companion object {
        private var mutex = Object()
        private var flag = false

        @Synchronized fun modifyFlag(){
            flag = setFlagValue()
        }

        @Synchronized fun getVal(): Boolean = this.flag
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.