2017-08-01 82 views
1

所以我想了解Kotlin如何处理属性的同步。如果我有这个类:同步属性获得者/设置者

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

,我想确保一个& B的所有访问同步。我会怎么做?我已经使用注释尝试:

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

但科特林给了我一个编译器错误:

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

我只是试图让在科特林线程安全性更好地处理。这是我一直在Java中使用OCD的原因,我正试图弄清楚如何在Kotlin中正确处理它。

回答

6

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

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

    //or 

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