2017-08-01 125 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 
}