java - 同步属性 getter / setter

标签 java kotlin

所以我试图了解 Kotlin 如何处理属性同步。如果我有这门课:

class Foo {
    var a = 0
    var b = 0
}

我想确保 a & b 的所有访问都同步。我该怎么做?我试过使用注释:

class Foo {
    @Synchronized
    var a = 0
    @Synchronized
    var b = 0
}

但是 Kotlin 给了我一个编译器错误:

This annotation is not applicable to target 'member property with backing field'

我只是想更好地处理 Kotlin 中的线程安全问题。这是我在 Java 中一直有强制症的问题,我正在尝试弄清楚如何在 Kotlin 中正确处理它。

最佳答案

您不能在属性上进行同步,但可以在访问器方法上进行同步。使用以下语法:

class Foo {
    var a = 0
        @Synchronized get
        @Synchronized set   

    //or

    @get:Synchronized @set:Synchronized
    var b = 0
}

关于java - 同步属性 getter / setter ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45445991/

相关文章:

kotlin - 如何检查 "lateinit"变量是否已初始化?

java - @DeclareRoles 如何定义特定角色中的用户?

java - 使用Jsoup登录该页面失败

java - 将带有表情符号的字符串映射到 Array<String|Char>

android - livedata builder可以进行一次性操作吗?

Kotlin Map 以类作为键?

gradle - Kotlin Gradle任务命令行无法按照PATH链接进行自制安装

java - Android 无法识别我的 ID

java - 如何将 htm 文件发送到套接字

java - jfreechart 多个数据集到 svg 图像